Ga naar inhoud

Verticaal CJK-schrift via Connect

In dit recipe bed je een Chinees, Japans en Koreaans (CJK) CIDFont met metrieken voor verticaal schrift in via de Connect-transporten. De engine emitteert volgens PDF 2.0 vermeldingen voor verticale metrieken (/W2 per glyph en /DW2 standaard) in het CIDFont-woordenboek en rendert een glyphstapel van boven naar beneden. Het inbedden van CJK-lettertypen valt onder de Enterprise-tier. De CJK-lettertypetools worden via class_exists()-probes gedetecteerd en registreren zich alleen wanneer nextpdf/premium naast de server is geïnstalleerd. De engine emitteert verticale metrieken alleen wanneer de actieve CID-codering de verticale Identity-codering is. Horizontale tekst blijft ongewijzigd.

Terminal window
composer require nextpdf/server

Controleer met een tools/list-aanroep of de CJK-lettertypetools uit de Enterprise-tier aanwezig zijn. Zie /connect/tool-catalog/.

Een CIDFont in verticale-schriftmodus gebruikt /W2 (per glyph) en /DW2 (standaard) verticale metrieken (ISO 32000-2 §9.7). De CMap selecteert de horizontale of verticale schriftmodus (ISO 32000-2 §9.7). De verticale-schriftmodus verplaatst de glyphvoortgang naar de verticale as (ISO 32000-2 §9.7). Wanneer je het lettertype registreert, parseert de pipeline de verticale-metriektabellen van het lettertype. De woordenboekvermeldingen worden pas geëmitteerd nadat je de verticale CID-codering selecteert.

Controleer toolnamen aan de hand van het actieve register met tools/list. De gezaghebbende catalogus is /connect/tool-catalog/. Dit recipe vermeldt het aantal tools niet opnieuw.

Maak het document aan, registreer het CJK-lettertype en selecteer de verticale codering:

{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "add_cjk_font",
"arguments": {
"document_id": "<id>",
"family": "NotoSansCJKjp",
"source": "/usr/share/fonts/opentype/noto/NotoSansCJKjp-Regular.otf",
"subset": true
}
}
}

Selecteer de verticale codering, stel het lettertype in, schrijf verticale tekst en inspecteer daarna het geëmitteerde CIDFont-woordenboek:

{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": {
"name": "set_cid_encoding",
"arguments": { "document_id": "<id>", "font_key": "NotoSansCJKjp", "encoding": "/Identity-V" }
}
}

Het CIDFont-woordenboek in de uitvoer bevat /W2 en /DW2. Dezelfde broncode laat beide weg wanneer je met de horizontale codering rendert. De codering is het enige verschil, waardoor het reproduceerbaarheidsprofiel structural hier nauwkeurig blijft.

  • Lettertype mist verticale-metriektabellen. De lettertypetool geeft een waarschuwing. Kies een CJK-lettertype dat ze bevat; een uitsluitend Latijns lettertype heeft er geen.
  • Verticale codering geselecteerd voor een lettertype zonder verticale metrieken is een fout. Val terug op de horizontale codering of kies een ander lettertype.
  • Verticale tekst aangevraagd terwijl de horizontale codering actief is is een fout. Selecteer de verticale codering voordat je voor het eerst verticale tekst emitteert.
  • Codering gewisseld na de eerste tekstemissie wordt afgewezen met een fout over de bevroren codering. Stel de codering onmiddellijk in nadat je het lettertype hebt geregistreerd.
  • Tool afwezig. Zonder nextpdf/premium worden de CJK-lettertypetools uit de Enterprise-tier niet geregistreerd en mislukt de aanroep met een fout over een onbekende tool.

Het frontmatter-budget is een documentatielimiet. Subsetting beperkt de grootte van de array met metrieken per glyph. Schakel subsetting alleen uit wanneer verticale tekst glyphs nodig heeft die de subset zou weglaten.

Geen aanvullende opmerkingen naast de algemene richtlijnen voor het Connect-transport.

BeweringClausulereference_id
Een verticaal CIDFont gebruikt /W2- en /DW2-metriekenISO 32000-2 §9.7
De CMap selecteert de horizontale versus verticale schriftmodusISO 32000-2 §9.7
De verticale-schriftmodus laat glyphs langs de verticale as voortgaanISO 32000-2 §9.7

Het emitteren van de vermeldingen voor verticale metrieken implementeert de aangehaalde clausules. Dit is geen algemene conformiteitsbewering. Een validator bepaalt of het document als geheel conform is.

Het inbedden van CJK-lettertypen valt onder de Enterprise-tier. De CJK-lettertypetools registreren zich alleen wanneer nextpdf/premium naast de server is geïnstalleerd.

Je roept dit op dezelfde manier aan via MCP tools/call, het REST-toolendpoint en de gRPC-service. Alle drie verlopen via de gedeelde tooluitvoerder.

Lettertyperegistratie, coderingsselectie en tekstemissie vallen onder risiconiveau caution. Bij uitvoer is goedkeuring vereist wanneer er een bestand wordt geschreven; in de base64-modus niet. Zie /connect/hitl-risk-niveaus/.

Wanneer het uitvoerpad dat een bestand schrijft via een poort verloopt, retourneert de poort een uitdagingsenvelop en een token voor eenmalig gebruik dat is gebonden aan de toolnaam, een nonce en een TTL van 300 seconden. Roep opnieuw aan met arguments._confirmation_token. Zie /connect/hitl-risk-niveaus/.

  • /cookbook/connect/font-typography/ — basisprincipes van horizontale tekst en lettertypeselectie.
  • /cookbook/connect/conformance-mode/ — verticale CJK-teksten vereisen nog steeds tagging voor PDF/UA-2.
  • /connect/tool-catalog/ — berekening van de toolset per tier.
  • /connect/hitl-risk-niveaus/ — het risicomodel en de poort.