Why Image Watermarks Handle Korean Fine But PDF Watermarks Break
Two tools both named "add watermark," yet the results are opposite. Type "© Copyright Jane Doe" into the Image Watermark tool and the text shows up exactly as typed — including any Korean characters. Type the same phrase into the PDF Watermark tool and all you get is a handful of empty boxes (□). Both tools run entirely in the browser, so why the different outcome? The root cause is that the two tools draw text in completely different ways.
1. Image watermark: the browser draws a glyph it already knows
The image watermark tool draws text directly onto the image using the Canvas 2D API's fillText() method. In the actual code, the font is set as ctx.font = size + 'px "Noto Sans KR", sans-serif' — and "Noto Sans KR" is a web font already loaded via Google Fonts at the top of the page. That means the browser already has all 11,172 Korean syllable glyphs available in that font file, and fillText simply stamps the glyph at the given coordinates. From the rendering engine's point of view, Korean, English, or emoji — it's all the same operation.
2. PDF watermark: the rule is not to embed a font at all
PDF works under an entirely different set of rules. The PDF specification (ISO 32000) defines 14 "Standard Fonts" — Helvetica, Times-Roman, Courier, and so on — and the key feature of these fonts is that the PDF file doesn't need to contain any font data at all. The spec itself guarantees that every program that opens a PDF — Acrobat, a browser's built-in viewer, a printer driver — already has these 14 fonts available locally. That's why this tool can call pdfDoc.embedFont(StandardFonts.HelveticaBold) and draw text immediately, with no font file to load.
3. The problem: all 14 fonts are Latin-only
The standard 14 fonts use an encoding table based on WinAnsiEncoding, which only covers Western European Latin letters, digits, and symbols. Korean syllables (11,172 of them), Chinese characters, and Japanese kana glyphs simply don't exist inside these 14 fonts. Where the image watermark tool "looks up a glyph in an already-loaded web font and draws it," the PDF watermark tool is effectively "being asked to draw a character that isn't in the file." When a renderer can't find the matching glyph, it substitutes an empty box or a broken-character placeholder — this isn't font corruption, it's simply that there's no way to draw the glyph in the first place.
| Item | Image Watermark | PDF Watermark |
|---|---|---|
| Text rendering API | Canvas 2D fillText() | pdf-lib drawText() |
| Font used | Noto Sans KR (web font, already loaded) | Helvetica Bold (PDF standard 14 font) |
| Korean glyph coverage | Full (all 11,172 syllables) | None (Latin only) |
| Result when typing Korean | Displays normally | Empty boxes (□) |
| Extra step required? | No | Yes (font embedding) |
4. To make Korean work in PDF: you have to embed the whole font
To actually render Korean in a PDF, you need to embed an entire TTF/OTF font file that contains Korean glyphs — such as Noto Sans KR — inside the PDF. In the pdf-lib ecosystem, that means registering a separate library, @pdf-lib/fontkit, via pdfDoc.registerFontkit(fontkit), then embedding the full font file bytes with pdfDoc.embedFont(fontBytes). A PDF built this way becomes self-contained — it carries its own Korean glyphs and renders correctly on any device — but it comes with the tradeoff of more complex code and a larger file size than using a standard font. This site's PDF watermark tool hasn't implemented this embedding step, in order to stay light and fast; the background is covered in more detail in the PDF Watermark Korean Font guide.
5. So what should you actually do?
- Adding a copyright notice or attribution to an image: the image watermark tool handles Korean and emoji without any issues — just use it as-is.
- You specifically need a Korean watermark on a PDF: right now, the most reliable option with this tool is to use an English word instead — CONFIDENTIAL, DRAFT, SAMPLE — which the standard fonts render perfectly.
- Your PDF source is actually an image: you can work around the limitation by capturing/converting the page to an image first, then adding the Korean watermark with the image watermark tool.
FAQ
Q. Why does the image watermark tool support Korean and even emoji?
A. Canvas's fillText references the "Noto Sans KR" web font already loaded by the browser. That font file contains all 11,172 Korean syllable glyphs plus most emoji glyphs, so they display with no extra handling.
Q. Why do the PDF standard's 14 fonts only cover Latin characters?
A. When the PDF spec was drafted in the early 1990s, including international CJK character sets in the baseline built-in fonts would have added significant font size and licensing overhead. So the spec guarantees only Latin fonts are built into every viewer, and any other script has to be embedded by the file's author.
Q. How much does embedding a font add to PDF file size?
A. Even with subset embedding (only the characters actually used, rather than the whole font file), you can expect tens to hundreds of KB more than a standard font (which adds zero bytes). For something as short as a watermark phrase, subset embedding keeps the overhead small.
Q. Does the same problem happen with Chinese or Japanese watermarks in PDF?
A. Yes. The standard 14 fonts have the same limitation across the board for CJK characters — Chinese hanzi and Japanese kana included, not just Korean — so the underlying cause is identical.