|
Soporte de modelado siríaco / mongol / devanagari Superficies de capacidad multiescritura (v2.119.53 - v2.119.55)
|
Arabic Shaping Auto Shaping Pipeline GSUB Engine |
|
HotPDF expone superficies de capacidad para clase de unión, análisis posicional y categoría silábica Indic para tres escrituras complejas además del árabe: siriaco (U+0700-U+074F), mongol (U+1800-U+18AF) y devanagari (U+0900-U+097F). Cada capacidad permite a los llamadores conducir la escritura mediante el motor OpenType GSUB existente para obtener un modelado correcto, mientras deja el trabajo pesado (detección de límites de clúster, resolución BiDi, posicionamiento GPOS) fuera del alcance de HotPDF
Capacidad de modelado siriaco (v2.119.53) Dos métodos nuevos exponen el comportamiento de unión del siríaco:
function GetSyriacJoiningClass(CP: Cardinal): TJoiningClass; function GetSyriacPosition(const Run: array of Cardinal; Index: Integer): TPosition;
El siríaco sigue el mismo marco de cuatro clases Right-Joining / Dual-Joining / Transparent / Non-Joining que el árabe;
A diferencia del árabe, el bloque siríaco no tiene Presentation Forms precodificados en Unicode - no existe un equivalente siríaco de los bloques U+FB50-FDFF / U+FE70-FEFC de Arabic Presentation Forms. Por tanto, los consumidores deben conducir el modelado siríaco mediante búsquedas GSUB definidas por la fuente (por lo general
Capacidad de modelado mongol (v2.119.54) Dos métodos paralelos para mongol:
function GetMongolianJoiningClass(CP: Cardinal): TJoiningClass; function GetMongolianPosition(const Run: array of Cardinal; Index: Integer): TPosition;
La cobertura incluye mongol básico (U+1820-U+1842), todo (U+1843-U+1877), sibe (U+1880-U+18A8), manchú y extensiones ali gali. Los selectores de variación FVS1 / FVS2 / FVS3 (U+180B-U+180D), el guion suave NIRUGU (U+180A) y las marcas vocálicas ali gali se clasifican todos como Transparent (clase T) para que participen en la unión sin interrumpir el recorrido
Al igual que el siríaco, el mongol no tiene Presentation Forms precodificados en Unicode. El diseño vertical tradicional del mongol, las reglas complejas de variación de la forma de las letras y la selección de formas impulsada por FVS se espera que se manejen mediante búsquedas GSUB definidas por la fuente (por lo general
Capacidad de modelado Indic devanagari (v2.119.55) El devanagari es fundamentalmente distinto del árabe / siríaco / mongol - es una escritura abugida índica en la que la unidad significativa es un grupo silábico (akshara), no una sola letra, y el orden renderizado de los glifos dentro de un grupo suele diferir del orden lógico Unicode. Dos métodos exponen la capa de capacidad índica de devanagari:
function GetDevanagariCategory(CP: Cardinal): TIndicCategory; procedure ApplyDevanagariReorder(var Run: array of Cardinal);
Integración automática (v2.119.67): cuando
Flujo de trabajo típico (siríaco)
PDF.RegisterUnicodeTTF('Estrangelo', 'SyrCOMEdessa.otf'); PDF.SetGSUBScript('syrc'); // see GSUB engine doc for i := 0 to Length(Run) - 1 do begin Pos := PDF.GetSyriacPosition(Run, i); // init / medi / fina / isol // query GSUB for the position-appropriate substitute glyph // emit + MarkUnicodeGlyphUsed end;
Flujo de trabajo típico (devanagari con reordenamiento automático)
PDF.RegisterUnicodeTTF('NotoDeva', 'NotoSansDevanagari-Regular.ttf'); PDF.ShapingFeatures := [sfIndicShaping]; // auto Repha + I-matra reorder PDF.CurrentPage.SetFont('NotoDeva', [], 14); PDF.CurrentPage.UnicodeTextOut(50, 700, 0, UnicodeString(#$0939#$093F#$0928#$094D#$0926#$0940)); // "Hindi"
Ayudantes de subconjunto y extracción Unicode
Alcance y limitaciones Integración actual del productor El modelado siríaco, mongol, tibetano e Indic ahora tiene páginas explícitas de referencia de API. Siríaco se puede habilitar mediante El alcance actual también cubre N'Ko y Adlam como escrituras cursivas RTL, Thai/Lao para SARA AM y marcas tonales, hebreo para el ordenamiento de niqqud y javanés para signos previos a la base. Estas rutas están documentadas en métodos de preprocesamiento de modelado de escritura
Ver también: Soporte de modelado árabe / persa / urdu, Canalización automática de modelado (fase 8), Motor de sustitución OpenType GSUB, THotPDF.AssignSyntheticCodepointForGID |