<div dir="ltr">A couple of minor points first<div><br></div><div>- This should map both Hans and Hant to HB_SCRIPT_HAN.</div><div><br></div><div>- The Georgian script in Unicode unifies various variants including Khutsuri, so Geok needs to be mapped to HB_SCRIPT_GEORGIAN (see Property_Value_Alias column of <a href="http://www.unicode.org/iso15924/iso15924-codes.html">http://www.unicode.org/iso15924/iso15924-codes.html</a>).</div>

<div><br></div><div>A more fundamental point is that ISO 15924 has several script tags that represent combinations of hb_script_t and so cannot be handled by this API (hb_script_t includes only script tags that can be values of the Unicode Script property), specifically:</div>

<div><br></div><div>Hrkt = Hira + Kata</div><div>Jpan = Hani + Hira + Kata</div><div>Kore = Hang + Hani</div><div><br></div><div>BCP 47 is also relevant here.  With BCP 47, a common (I guess by far the most common) place to find an ISO 15924 script tag will be as part of an IETF language tag. BCP 47 and the IETF language subtag registry also have a Suppress-Script feature (<a href="http://tools.ietf.org/html/bcp47#section-3.1.9">http://tools.ietf.org/html/bcp47#section-3.1.9</a>).  This is a field in the record for a primary language subtag that "indicates a script <span style="font-size:1em;color:rgb(0,0,0)">used to write the overwhelming majority of documents for the given language".  So for example, "en" has Suppress-Script: "Latn" and "th" has Suppress-Script: "Thai".  </span><span style="font-size:1em;color:rgb(0,0,0)">BCP 47 says that such a script should not be included in the language tag.  To put it the other way round, specifying a language tag of "en" is equivalent to specifying "en-Latn". This relies on the combo script tags; for example, "ja" has Suppress-Script: "Jpan".</span></div>

<div><span style="color:rgb(0,0,0);font-size:1em"><br></span></div><div><span style="color:rgb(0,0,0);font-size:1em">Given the above, I think it would be more useful to have an API that would turn an hb_language_t would into a list of zero or more (up to 3) hb_script_t's; this would take into account any explicit script subtag included in the language tag as well as any script implied by the Suppress-Script field.  </span><span style="color:rgb(0,0,0);font-size:1em">This would be useful for allowing script itemization to take into account any explicit language tagging (I guess this is what the Microsoft DirectWrite docs are talking about when they mention "language guided" script itemization).</span></div>

<div><span style="color:rgb(0,0,0);font-size:1em"><br></span></div><div><span style="color:rgb(0,0,0);font-size:1em">James</span></div><div><br></div></div>