306 {{
SCRIPT_UNDEFINED, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
307 {
LANG_NEUTRAL, 0, 0, 0, 0,
ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
310 {{
Script_Latin, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
311 {
LANG_ENGLISH, 0, 0, 0, 0,
ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0},
313 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
314 {{
Script_CR, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
315 {
LANG_NEUTRAL, 0, 0, 0, 0,
ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
318 {{
Script_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
319 {
LANG_ENGLISH, 1, 0, 0, 0,
ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
321 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
322 {{
Script_Control, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
323 {
LANG_ENGLISH, 0, 1, 0, 0,
ANSI_CHARSET, 1, 0, 0, 0, 0, 0, 1, 0, 0},
326 {{
Script_Punctuation, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
327 {
LANG_NEUTRAL, 0, 0, 0, 0,
ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
329 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
330 {{
Script_Arabic, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}},
331 {
LANG_ARABIC, 0, 1, 0, 0,
ARABIC_CHARSET, 0, 0, 0, 0, 0, 0, 1, 1, 0},
333 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
334 {{
Script_Arabic_Numeric, 0, 1, 0, 0, 0, 0, { 2,0,0,0,0,0,0,0,0,0,0}},
335 {
LANG_ARABIC, 1, 1, 0, 0,
ARABIC_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0},
337 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
338 {{
Script_Hebrew, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}},
339 {
LANG_HEBREW, 0, 1, 0, 1,
HEBREW_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
341 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
342 {{
Script_Syriac, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}},
343 {
LANG_SYRIAC, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 1, 0},
345 {
'E',
's',
't',
'r',
'a',
'n',
'g',
'e',
'l',
'o',
' ',
'E',
'd',
'e',
's',
's',
'a',0}},
346 {{
Script_Persian, 0, 1, 0, 0, 0, 0, { 2,0,0,0,0,0,0,0,0,0,0}},
347 {
LANG_PERSIAN, 1, 1, 0, 0,
ARABIC_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
349 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
350 {{
Script_Thaana, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}},
351 {
LANG_DIVEHI, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
353 {
'M',
'V',
' ',
'B',
'o',
'l',
'i',0}},
354 {{
Script_Greek, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
355 {
LANG_GREEK, 0, 0, 0, 0,
GREEK_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
357 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
358 {{
Script_Cyrillic, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
359 {
LANG_RUSSIAN, 0, 0, 0, 0,
RUSSIAN_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
361 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
362 {{
Script_Armenian, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
363 {
LANG_ARMENIAN, 0, 0, 0, 0,
ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0},
365 {
'S',
'y',
'l',
'f',
'a',
'e',
'n',0}},
366 {{
Script_Georgian, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
367 {
LANG_GEORGIAN, 0, 0, 0, 0,
ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0},
369 {
'S',
'y',
'l',
'f',
'a',
'e',
'n',0}},
370 {{
Script_Sinhala, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
371 {
LANG_SINHALESE, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
373 {
'I',
's',
'k',
'o',
'o',
'l',
'a',
' ',
'P',
'o',
't',
'a',0}},
374 {{
Script_Tibetan, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
375 {
LANG_TIBETAN, 0, 1, 1, 1,
DEFAULT_CHARSET, 0, 0, 1, 0, 1, 0, 0, 0, 0},
377 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'H',
'i',
'm',
'a',
'l',
'a',
'y',
'a',0}},
378 {{
Script_Tibetan_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
379 {
LANG_TIBETAN, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
381 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'H',
'i',
'm',
'a',
'l',
'a',
'y',
'a',0}},
382 {{
Script_Phags_pa, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
383 {
LANG_MONGOLIAN, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
385 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'P',
'h',
'a',
'g',
's',
'P',
'a',0}},
386 {{
Script_Thai, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
387 {
LANG_THAI, 0, 1, 1, 1,
THAI_CHARSET, 0, 0, 1, 0, 1, 0, 0, 0, 1},
389 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
390 {{
Script_Thai_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
391 {
LANG_THAI, 1, 1, 0, 0,
THAI_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
393 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
394 {{
Script_Lao, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
395 {
LANG_LAO, 0, 1, 1, 1,
DEFAULT_CHARSET, 0, 0, 1, 0, 1, 0, 0, 0, 0},
397 {
'D',
'o',
'k',
'C',
'h',
'a',
'm',
'p',
'a',0}},
398 {{
Script_Lao_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
399 {
LANG_LAO, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
401 {
'D',
'o',
'k',
'C',
'h',
'a',
'm',
'p',
'a',0}},
402 {{
Script_Devanagari, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
403 {
LANG_HINDI, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0},
405 {
'M',
'a',
'n',
'g',
'a',
'l',0}},
406 {{
Script_Devanagari_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
407 {
LANG_HINDI, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
409 {
'M',
'a',
'n',
'g',
'a',
'l',0}},
410 {{
Script_Bengali, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
411 {
LANG_BENGALI, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0},
413 {
'V',
'r',
'i',
'n',
'd',
'a',0}},
414 {{
Script_Bengali_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
415 {
LANG_BENGALI, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
417 {
'V',
'r',
'i',
'n',
'd',
'a',0}},
418 {{
Script_Bengali_Currency, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
419 {
LANG_BENGALI, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
421 {
'V',
'r',
'i',
'n',
'd',
'a',0}},
422 {{
Script_Gurmukhi, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
423 {
LANG_PUNJABI, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0},
425 {
'R',
'a',
'a',
'v',
'i',0}},
426 {{
Script_Gurmukhi_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
427 {
LANG_PUNJABI, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
429 {
'R',
'a',
'a',
'v',
'i',0}},
430 {{
Script_Gujarati, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
431 {
LANG_GUJARATI, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0},
433 {
'S',
'h',
'r',
'u',
't',
'i',0}},
434 {{
Script_Gujarati_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
435 {
LANG_GUJARATI, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
437 {
'S',
'h',
'r',
'u',
't',
'i',0}},
438 {{
Script_Gujarati_Currency, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
439 {
LANG_GUJARATI, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
441 {
'S',
'h',
'r',
'u',
't',
'i',0}},
442 {{
Script_Oriya, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
443 {
LANG_ORIYA, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0},
445 {
'K',
'a',
'l',
'i',
'n',
'g',
'a',0}},
446 {{
Script_Oriya_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
447 {
LANG_ORIYA, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
449 {
'K',
'a',
'l',
'i',
'n',
'g',
'a',0}},
450 {{
Script_Tamil, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
451 {
LANG_TAMIL, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0},
453 {
'L',
'a',
't',
'h',
'a',0}},
454 {{
Script_Tamil_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
455 {
LANG_TAMIL, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
457 {
'L',
'a',
't',
'h',
'a',0}},
458 {{
Script_Telugu, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
459 {
LANG_TELUGU, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0},
461 {
'G',
'a',
'u',
't',
'a',
'm',
'i',0}},
462 {{
Script_Telugu_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
463 {
LANG_TELUGU, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
465 {
'G',
'a',
'u',
't',
'a',
'm',
'i',0}},
466 {{
Script_Kannada, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
467 {
LANG_KANNADA, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0},
469 {
'T',
'u',
'n',
'g',
'a',0}},
470 {{
Script_Kannada_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
471 {
LANG_KANNADA, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
473 {
'T',
'u',
'n',
'g',
'a',0}},
474 {{
Script_Malayalam, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
475 {
LANG_MALAYALAM, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0},
477 {
'K',
'a',
'r',
't',
'i',
'k',
'a',0}},
478 {{
Script_Malayalam_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
479 {
LANG_MALAYALAM, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
481 {
'K',
'a',
'r',
't',
'i',
'k',
'a',0}},
482 {{
Script_Diacritical, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
483 {
LANG_ENGLISH, 0, 1, 0, 1,
ANSI_CHARSET, 0, 0, 0, 0, 0, 1, 1, 0, 0},
486 {{
Script_Punctuation2, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
487 {
LANG_ENGLISH, 0, 0, 0, 0,
ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
489 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
490 {{
Script_Numeric2, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
491 {
LANG_ENGLISH, 1, 0, 0, 0,
ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0},
494 {{
Script_Myanmar, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
495 {0x55, 0, 1, 1, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0},
497 {
'M',
'y',
'a',
'n',
'm',
'a',
'r',
' ',
'T',
'e',
'x',
't',0}},
498 {{
Script_Myanmar_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
499 {0x55, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
502 {{
Script_Tai_Le, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
503 {0, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
505 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'T',
'a',
'i',
' ',
'L',
'e',0}},
506 {{
Script_New_Tai_Lue, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
507 {0, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
509 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'N',
'e',
'w',
' ',
'T',
'a',
'i',
' ',
'L',
'u',
'e',0}},
510 {{
Script_New_Tai_Lue_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
511 {0, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
513 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'N',
'e',
'w',
' ',
'T',
'a',
'i',
' ',
'L',
'u',
'e',0}},
514 {{
Script_Khmer, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
515 {0x53, 0, 1, 1, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0},
517 {
'D',
'a',
'u',
'n',
'P',
'e',
'n',
'h',0}},
518 {{
Script_Khmer_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
519 {0x53, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
521 {
'D',
'a',
'u',
'n',
'P',
'e',
'n',
'h',0}},
522 {{
Script_CJK_Han, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
523 {
LANG_ENGLISH, 0, 0, 0, 0,
ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0},
526 {{
Script_Ideograph, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
527 {
LANG_ENGLISH, 0, 0, 0, 0,
ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0},
530 {{
Script_Bopomofo, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
531 {
LANG_ENGLISH, 0, 0, 0, 0,
ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0},
534 {{
Script_Kana, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
535 {
LANG_ENGLISH, 0, 0, 0, 0,
ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0},
538 {{
Script_Hangul, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
539 {
LANG_KOREAN, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0},
542 {{
Script_Yi, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
543 {
LANG_ENGLISH, 0, 0, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0},
545 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'Y',
'i',
' ',
'B',
'a',
'i',
't',
'i',0}},
546 {{
Script_Ethiopic, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
547 {0x5e, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
549 {
'N',
'y',
'a',
'l',
'a',0}},
550 {{
Script_Ethiopic_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
551 {0x5e, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
553 {
'N',
'y',
'a',
'l',
'a',0}},
554 {{
Script_Mongolian, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
555 {
LANG_MONGOLIAN, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
557 {
'M',
'o',
'n',
'g',
'o',
'l',
'i',
'a',
'n',
' ',
'B',
'a',
'i',
't',
'i',0}},
558 {{
Script_Mongolian_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
559 {
LANG_MONGOLIAN, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
561 {
'M',
'o',
'n',
'g',
'o',
'l',
'i',
'a',
'n',
' ',
'B',
'a',
'i',
't',
'i',0}},
562 {{
Script_Tifinagh, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
563 {0, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
565 {
'E',
'b',
'r',
'i',
'm',
'a',0}},
566 {{
Script_NKo, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}},
567 {0, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
569 {
'E',
'b',
'r',
'i',
'm',
'a',0}},
570 {{
Script_Vai, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
571 {0, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
573 {
'E',
'b',
'r',
'i',
'm',
'a',0}},
574 {{
Script_Vai_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
575 {0, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
577 {
'E',
'b',
'r',
'i',
'm',
'a',0}},
578 {{
Script_Cherokee, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
579 {0x5c, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
581 {
'P',
'l',
'a',
'n',
't',
'a',
'g',
'e',
'n',
'e',
't',
' ',
'C',
'h',
'e',
'r',
'o',
'k',
'e',
'e',0}},
582 {{
Script_Canadian, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
583 {0x5d, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
585 {
'E',
'u',
'p',
'h',
'e',
'm',
'i',
'a',0}},
586 {{
Script_Ogham, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
587 {0, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
589 {
'S',
'e',
'g',
'o',
'e',
' ',
'U',
'I',
' ',
'S',
'y',
'm',
'b',
'o',
'l',0}},
590 {{
Script_Runic, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
591 {0, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
593 {
'S',
'e',
'g',
'o',
'e',
' ',
'U',
'I',
' ',
'S',
'y',
'm',
'b',
'o',
'l',0}},
594 {{
Script_Braille, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
595 {
LANG_ENGLISH, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
597 {
'S',
'e',
'g',
'o',
'e',
' ',
'U',
'I',
' ',
'S',
'y',
'm',
'b',
'o',
'l',0}},
598 {{
Script_Surrogates, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
599 {
LANG_ENGLISH, 0, 1, 0, 1,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0},
602 {{
Script_Private, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
603 {0, 0, 0, 0, 0,
DEFAULT_CHARSET, 0, 1, 0, 0, 0, 0, 1, 0, 0},
606 {{
Script_Deseret, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
607 {0, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
609 {
'S',
'e',
'g',
'o',
'e',
' ',
'U',
'I',
' ',
'S',
'y',
'm',
'b',
'o',
'l',0}},
610 {{
Script_Osmanya, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
611 {0, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
613 {
'E',
'b',
'r',
'i',
'm',
'a',0}},
614 {{
Script_Osmanya_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
615 {0, 1, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
617 {
'E',
'b',
'r',
'i',
'm',
'a',0}},
618 {{
Script_MathAlpha, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
619 {0, 0, 1, 0, 0,
DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
621 {
'C',
'a',
'm',
'b',
'r',
'i',
'a',
' ',
'M',
'a',
't',
'h',0}},
622 {{
Script_Hebrew_Currency, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
623 {
LANG_HEBREW, 0, 1, 0, 0,
HEBREW_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
625 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
626 {{
Script_Vietnamese_Currency, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
627 {
LANG_VIETNAMESE, 0, 0, 0, 0,
VIETNAMESE_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
629 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
630 {{
Script_Thai_Currency, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
631 {
LANG_THAI, 0, 1, 0, 0,
THAI_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
633 {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0}},
686 0, 0, { (
DWORD_PTR)(__FILE__
": script_cache") }
732 SIZE_T max_capacity, new_capacity;
735 if (
count <= *capacity)
739 if (
count > max_capacity)
742 new_capacity =
max(1, *capacity);
743 while (new_capacity <
count && new_capacity <= max_capacity / 2)
745 if (new_capacity <
count)
746 new_capacity =
count;
749 new_elements = heap_alloc_zero(new_capacity *
size);
755 *elements = new_elements;
756 *capacity = new_capacity;
775 static const WCHAR chars[4] = {0x0020, 0x200B, 0xF71B, 0x0640};
793 else if (gi[1] != 0xFFFF)
795 else if (gi[0] != 0xFFFF)
832 if (!
block)
return 0;
887 if (!
memcmp(&sc->
lf, &lf,
sizeof(lf)))
924 if (sc != *
psc && !
memcmp(&sc->
lf, &lf,
sizeof(lf)))
936 TRACE(
"<- %p\n", sc);
964 if (*ch >
range->rangeLast)
972 static const WCHAR latin_punc[] = {
'#',
'$',
'&',
'\'',
',',
';',
'<',
'>',
'?',
'@',
'\\',
'^',
'_',
'`',
'{',
'|',
'}',
'~', 0x00a0, 0};
1022 return range->numericScript;
1024 return range->punctScript;
1025 return range->script;
1039 if (!
find->ascending)
1125 for (
j = 0;
j < ((
ScriptCache *)*
psc)->scripts[
n].default_language.feature_count;
j++)
1280 TRACE(
"%p, %p, %p\n", sds, sc,
ss);
1292 ss->fDigitSubstitute = 0;
1350#define Numeric_space 0x0020
1365 WORD baselayout = 0;
1372 TRACE(
"%s,%d,%d,%p,%p,%p,%p\n",
debugstr_wn(pwcInChars,
cInChars),
cInChars,
cMaxItems,
1390 scripts[
i] = scripts[
i-1];
1395 if ((pwcInChars[
i] == 0x964 || pwcInChars[
i] ==0x965) && last_indic !=
Script_Undefined)
1396 scripts[
i] = last_indic;
1405 if (!forceLevels && ((pwcInChars[
i] >= 0x200B && pwcInChars[
i] <= 0x200F) ||
1406 (pwcInChars[
i] >= 0x202A && pwcInChars[
i] <= 0x202E) ||
1407 (pwcInChars[
i] >= 0x2066 && pwcInChars[
i] <= 0x2069)))
1417 scripts[
i] = scripts[
i-1];
1423 for (
j =
i-1;
j >= 0 && scripts[
j] == first_script && pwcInChars[
j] !=
Numeric_space;
j--)
1433 scripts[
j] = scripts[
i];
1438 scripts[
i] = scripts[
j];
1447 if (
i > 0 && (pwcInChars[
i] ==
ZWJ || pwcInChars[
i] ==
ZWNJ || pwcInChars[
i] ==
ZWSP))
1451 scripts[
i] = scripts[
i-1];
1456 if (pwcInChars[
j] !=
ZWJ && pwcInChars[
j] !=
ZWNJ
1459 scripts[
i] = scripts[
j];
1478 if (
psState->fOverrideDirection)
1483 s.fOverrideDirection =
FALSE;
1485 if (
odd(layout_levels[0]))
1488 if (layout_levels[
i]!=layout_levels[0])
1503 baselayout = layout_levels[0];
1514 layout_levels =
NULL;
1518 static const WCHAR math_punc[] = {
'#',
'$',
'%',
'+',
',',
'-',
'.',
'/',
':',0x2212, 0x2044, 0x00a0,0};
1519 static const WCHAR repeatable_math_punc[] = {
'#',
'$',
'%',
'+',
'-',
'/',0x2212, 0x2044,0};
1539 wcschr(math_punc, pwcInChars[
i]))
1543 scripts[
i] = scripts[
i+1];
1545 strength[
i] = strength[
i-1];
1548 else if (
wcschr(repeatable_math_punc, pwcInChars[
i]))
1557 scripts[
i] = scripts[
j];
1559 strength[
i] = strength[
i-1];
1562 else if (pwcInChars[
i] != pwcInChars[
j])
break;
1578 if (
i > 0 && (pwcInChars[
i] ==
ZWJ || pwcInChars[
i] ==
ZWNJ || pwcInChars[
i] ==
ZWSP))
1582 strength[
i] = strength[
i-1];
1585 if (pwcInChars[
j] !=
ZWJ && pwcInChars[
j] !=
ZWNJ
1588 strength[
i] = strength[
j];
1601 for (
j =
i;
j > 0;
j--)
1607 scripts[
i] = scripts[
j];
1608 strength[
i] = strength[
j];
1623 scripts[
i] = scripts[
j];
1624 strength[
i] = strength[
j];
1641 New_Script = scripts[cnt];
1650 str = strength[cnt];
1659 layoutRTL =
odd(layout_levels[cnt]);
1661 layoutRTL = (
psState->uBidiLevel ||
odd(layout_levels[cnt]));
1663 pItems[
index].a.s.fOverrideDirection = (overrides[cnt] != 0);
1671 else if (!
pItems[
index].
a.s.uBidiLevel || (overrides && overrides[cnt]))
1675 layoutRTL =
odd(baselayout);
1684 TRACE(
"New_Level=%i New_Strength=%i New_Script=%d, eScript=%d index=%d cnt=%d iCharPos=%d\n",
1691 New_Script = scripts[cnt];
1698 New_Script = scripts[cnt+
j];
1700 New_Script = scripts[cnt];
1718 else if (strength && pwcInChars[cnt] !=
Numeric_space &&
str != strength[cnt])
1720 TRACE(
"Strength break (%i/%i)\n",
str,strength[cnt]);
1732 layoutRTL =
odd(layout_levels[cnt]);
1739 TRACE(
"New_Level = %i, New_Strength = %i, New_Script=%d, eScript=%d\n",
levels?
levels[cnt]:-1, strength?strength[cnt]:
str, New_Script,
pItems[
index].
a.eScript);
1746 str = strength[cnt];
1757 pItems[
index].a.s.fOverrideDirection = (overrides[cnt] != 0);
1758 if (layout_levels[cnt] == 0)
1761 layoutRTL = (layoutRTL ||
odd(layout_levels[cnt]));
1769 else if (!
pItems[
index].
a.s.uBidiLevel || (overrides && overrides[cnt]))
1887 defWidth = (pTabdef->
pTabStops[0])*
psc->tm.tmAveCharWidth;
1893 defWidth = (32 * pTabdef->
iScale) / 4;
1895 defWidth = 8 *
psc->tm.tmAveCharWidth;
1898 for (; cTabStops>0 ; lpTabPos++, cTabStops--)
1900 int position = *lpTabPos;
1902 position = -1 * position;
1904 position = (position * pTabdef->
iScale) / 4;
1906 position = position *
psc->tm.tmAveCharWidth;
1908 if( nTabOrg + position > current_x)
1913 x = (nTabOrg + position) - current_x;
1918 FIXME(
"Negative tabstop\n");
1923 if ((!cTabStops) && (defWidth > 0))
1924 x =((((current_x - nTabOrg) / defWidth)+1) * defWidth) - current_x;
1925 else if ((!cTabStops) && (defWidth < 0))
1926 FIXME(
"TODO: Negative defWidth\n");
1940 if (
psa->fNoGlyphIndex)
1967 static const WCHAR szFmt[] = {
'%',
'x',0};
1996 int i, num_items = 255;
2000 TRACE(
"(%p,%p,%d,%d,%d,0x%x,%d,%p,%p,%p,%p,%p,%p)\n",
2006 FIXME(
"Only Unicode strings are supported\n");
2012 if (!(analysis = heap_alloc_zero(
sizeof(*analysis))))
2034 if (!(iString =
heap_calloc(cString,
sizeof(*iString))))
2039 for (
i = 0;
i < cString;
i++)
2070 if (!(BidiLevel = heap_alloc_zero(analysis->
numItems)))
2093 int numGlyphsReturned;
2094 HFONT originalFont = 0x0;
2140 piAdvance, pGoffset, &analysis->
glyphs[
i].
abc);
2147 for (tabi = 0; tabi < cChar; tabi++)
2151 tab_x+=piAdvance[tabi];
2191 if (pva[glyph].fClusterStart)
2217 INT runStart, runEnd;
2219 HFONT oldFont = 0x0;
2223 TRACE(
"(%p,%d,%d,%d,%d,%d, 0x%1x, %d, %d)\n",
2224 ssa, iX, iY, iItem, cStart, cEnd, uOptions, fSelected, fDisabled);
2228 if ((cStart >= 0 && analysis->
pItem[iItem+1].
iCharPos <= cStart) ||
2259 if (cEnd >= 0 && cEnd < analysis->pItem[iItem+1].iCharPos)
2263 crc.
left = iX + off_x;
2267 if (cStart >=0 && runStart)
2271 crc.
left = iX + off_x;
2309 clust_glyph = iGlyph +
cGlyphs;
2325 iY, uOptions, &crc, &analysis->
pItem[iItem].
a,
NULL, 0,
2330 TRACE(
"ScriptTextOut hr=%08x\n",
hr);
2379 TRACE(
"(%p,%d,%d,0x%08x,%s,%d,%d,%d)\n",
2392 if (iMinSel < iMaxSel && (iMinSel > 0 || iMaxSel > 0))
2394 if (iMaxSel > 0 && iMinSel < 0)
2417 TRACE(
"(%p), %d, %d, (%p)\n", ssa, icp, fTrailing, pX);
2419 if (!ssa || !pX)
return S_FALSE;
2449 if (icp >= analysis->
pItem[
i+1].
iCharPos || icp < analysis->pItem[
i].iCharPos)
2479 TRACE(
"(%p), %d, (%p), (%p)\n", ssa, iX, piCh, piTrailing);
2481 if (!ssa || !piCh || !piTrailing)
return S_FALSE;
2490 *piTrailing =
FALSE;
2530 &analysis->
pItem[
i].
a, piCh, piTrailing);
2538 *piTrailing =
FALSE;
2562 TRACE(
"(%p)\n", pssa);
2595 int direction,
int* iCluster,
int *check_out)
2601 for (
check =
item+direction; check < cChars && check >= 0;
check+=direction)
2606 if (iCluster && *iCluster == -1)
2630 if (glyph > log_clust_max)
2633 for (glyph+=direction; glyph < cGlyphs && glyph >= 0; glyph +=direction)
2638 if (glyph > log_clust_max)
2656 const int *piAdvance,
2665 float special_size = 0.0;
2670 TRACE(
"(%d,%d,%d,%d,%p,%p,%p,%p,%p)\n",
2674 if (
psa->fRTL && !
psa->fLogicalOrder)
2687 ERR(
"We do not handle non reversed clusters properly\n");
2693 iMaxPos += piAdvance[
item];
2699 if (iSpecial == -1 && (iCluster == -1 || iCluster+clust_size <=
item))
2713 for (glyph = clust; glyph <
cGlyphs; glyph++)
2717 iPosX += special_size;
2724 if (clust_size == 0)
2731 else if (iSpecial != -1)
2732 iPosX += special_size;
2739 if (clust_size == 0)
2743 iPosX += adv / (
float)clust_size;
2749 iPosX = iMaxPos - iPosX;
2755 TRACE(
"*piX=%d\n", *piX);
2769 if (!
size && start_index)
2777 else if (
size)
break;
2796 int cChars,
int cluster,
int direction)
2807 for (glyph_start = -1, glyph_end = -1; i < cChars && i >= 0 && (glyph_start < 0 || glyph_end < 0);
i+=direction)
2809 if (glyph_start < 0 &&
pwLogClust[
i] != cluster)
continue;
2821 FIXME(
"multi-glyph reversed clusters found\n");
2822 glyph_end = glyph_start + 1;
2827 for (
i = glyph_start+1;
i< glyph_end;
i++)
2829 if (psva[
i].fClusterStart)
2836 for (
advance = 0,
i = glyph_start;
i < glyph_end;
i++)
2859 const int *piAdvance,
2867 int glyph_index, cluster_index;
2870 TRACE(
"(%d,%d,%d,%p,%p,%p,%p,%p,%p)\n",
2872 psa, piCP, piTrailing);
2874 if (
psa->fRTL && !
psa->fLogicalOrder)
2900 FIXME(
"We do not handle non reversed clusters properly\n");
2908 for (glyph_index = -1, iPosX = iX; iPosX >=0 && glyph_index <
cGlyphs; iPosX -= piAdvance[glyph_index+1], glyph_index++)
2913 for (glyph_index = -1, iPosX = iX; iPosX > 0 && glyph_index <
cGlyphs; iPosX -= piAdvance[glyph_index+1], glyph_index++)
2917 TRACE(
"iPosX %i -> glyph_index %i (%i)\n", iPosX, glyph_index,
cGlyphs);
2920 if (glyph_index >= 0 && glyph_index <
cGlyphs)
2927 for (
i = 0, cluster_index =
pwLogClust[0]; i < cChars && pwLogClust[i] >= glyph_index; cluster_index=
pwLogClust[
i++])
2930 TRACE(
"cluster_index %i\n", cluster_index);
2932 if (direction < 0 && iPosX >= 0 && glyph_index != cluster_index)
2942 TRACE(
"first char index %i\n",
i);
2946 if (glyph_index != cluster_index ||
2947 (direction > 0 &&
abs(iPosX) <= (piAdvance[glyph_index] / 2)) ||
2948 (direction < 0 &&
abs(iPosX) >= (piAdvance[glyph_index] / 2)))
2962 for (adv = iPosX, part_index = cluster_index; part_index <= glyph_index; part_index++)
2963 adv += piAdvance[part_index];
2964 if (adv > iX) adv = iX;
2966 TRACE(
"Multi-char cluster, no snap\n");
2968 TRACE(
"advance %i divides into %f per char\n", cluster_advance, cluster_part_width);
2971 for (part_index = 0; adv >= 0; adv-=cluster_part_width, part_index++)
2973 if (part_index) part_index--;
2977 for (part_index = 0; adv > 0; adv-=cluster_part_width, part_index++)
2981 adv += cluster_part_width;
2986 TRACE(
"base_char %i part_index %i, leftover advance %f\n",
i, part_index, adv);
2994 if ((direction > 0 &&
fabs(adv) <= (cluster_part_width / 2.0)) ||
2995 (direction < 0 && adv &&
fabs(adv) >= (cluster_part_width / 2.0)))
3001 if ((direction > 0 &&
abs(iPosX) <= (piAdvance[glyph_index] / 2)) ||
3002 (direction < 0 &&
abs(iPosX) >= (piAdvance[glyph_index] / 2)))
3009 TRACE(
"Point falls outside of string\n");
3010 if (glyph_index < 0)
3028 TRACE(
"*piCP=%d\n", *piCP);
3029 TRACE(
"*piTrailing=%d\n", *piTrailing);
3081 if (!chars ||
len < 0)
3138 static int once = 0;
3140 TRACE(
"(%p, %p, %p, %s, %s, %p, %p, %d, %s, %d, %d, %p, %p, %p, %p, %p )\n",
3146 if (
psa)
TRACE(
"psa values: %d, %d, %d, %d, %d, %d, %d\n",
psa->eScript,
psa->fRTL,
psa->fLayoutRTL,
3147 psa->fLinkBefore,
psa->fLinkAfter,
psa->fLogicalOrder,
psa->fNoGlyphIndex);
3153 if(!once++)
FIXME(
"Ranges not supported yet\n");
3191 for (
i = 0,
g = 0, cluster = 0;
i <
cChars;
i++)
3206 rChars[
i] = chInput;
3263 TRACE(
"no glyph translation\n");
3275 if (
psa->fNoGlyphIndex)
3343 hr =
ScriptShapeOpenType(
hdc,
psc,
psa,
scriptInformation[
psa->eScript].
scriptTag, 0,
NULL,
NULL, 0,
pwcChars,
cChars,
cMaxGlyphs,
pwLogClust, charProps,
pwOutGlyphs, glyphProps,
pcGlyphs);
3348 psva[
i] = glyphProps[
i].sva;
3399 static int once = 0;
3401 TRACE(
"(%p, %p, %p, %s, %s, %p, %p, %d, %s, %p, %p, %d, %p, %p, %d, %p %p %p)\n",
3410 if (!pGoffset)
return E_FAIL;
3413 if (!once++)
FIXME(
"Ranges not supported yet\n");
3425 pGoffset[
i].
du = pGoffset[
i].
dv = 0;
3427 if (pGlyphProps[
i].sva.fZeroWidth)
3430 if (piAdvance) piAdvance[
i] = 0;
3434 if (
psa->fNoGlyphIndex)
3441 glyph = pwGlyphs[
i];
3486 if (pABC)
TRACE(
"Total for run: abcA=%d, abcB=%d, abcC=%d\n", pABC->
abcA, pABC->
abcB, pABC->
abcC);
3518 TRACE(
"(%p, %p, %p, %d, %p, %p, %p, %p, %p)\n",
hdc,
psc, pwGlyphs,
cGlyphs, psva,
psa,
3519 piAdvance, pGoffset, pABC);
3522 if (!pGoffset)
return E_FAIL;
3528 glyphProps[
i].sva = psva[
i];
3530 hr =
ScriptPlaceOpenType(
hdc,
psc,
psa,
scriptInformation[
psa->eScript].
scriptTag, 0,
NULL,
NULL, 0,
NULL,
NULL,
NULL, 0, pwGlyphs, glyphProps,
cGlyphs, piAdvance, pGoffset, pABC);
3560 TRACE(
"(%p,%p,%s,%d,0x%x,%p)\n",
hdc,