Introduction If you have ever peeked under the hood of a PDF file—using a text editor, a preflight tool, or a font inspection utility—you might have stumbled upon cryptic labels like CID Font F1 , F2 , F3 , or F4 . To the uninitiated, these look like error codes or placeholder names. However, to prepress technicians, software developers, and document engineers, these identifiers are gateways to understanding how complex scripts (especially Asian languages like Chinese, Japanese, and Korean) are handled in digital typography.
Add a /ToUnicode stream using tools like cpdf or Adobe Acrobat Pro’s "Preflight" fixups. 4.4 "Glyph missing from CID font F4" Cause: The font subset embedded in the PDF does not contain a particular character. cid font f1 f2 f3 f4
In the page’s /Resources: /Resources << /Font << /F1 10 0 R >> >> Introduction If you have ever peeked under the
In this extensive guide, we will dissect every aspect of the keyword —explaining what a CID font is, what the F1/F2/F3/F4 labels represent, how they are structured in PDF internals, common issues, and how to manage them effectively. Part 1: What is a CID Font? Before we can understand f1, f2, f3, f4 , we must first grasp the concept of a CID-keyed font . 1.1 The Origin of CID CID stands for Character Identifier . Traditional font encoding systems (like Type 1 or TrueType) were designed for languages with small character sets (e.g., Latin alphabet: 26 letters). However, languages like Japanese (Kanji), Traditional Chinese, and Korean have thousands of characters. Encoding each glyph directly would be inefficient. Add a /ToUnicode stream using tools like cpdf
name type encoding emb sub uni object ID ----------------- ------------ ------------ --- --- --- --------- F1 CID Type0 Identity-H yes yes yes 7 0 F2 CID Type2 Identity-V yes yes yes 10 0 To peek inside the PDF structure:
8 0 obj << /Type /Font /Subtype /CIDFontType2 /BaseFont /MS-Gothic /CIDSystemInfo << /Registry (Adobe) /Ordering (Japan1) /Supplement 5 >> /FontDescriptor 9 0 R /DW 1000 >> endobj 10 0 obj << /Type /Font /Subtype /Type0 /BaseFont /MS-Gothic-H /Encoding /Identity-H /DescendantFonts [8 0 R] /ToUnicode 11 0 R >> endobj
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite \ -sOutputFile=output.pdf \ -dSubsetFonts=false \ -dEmbedAllFonts=true \ input.pdf List all fonts in a PDF, showing if they are CID and their internal names: