본문 바로가기
파일 형식 백과사전

인쇄소에 보낸 PDF에서 글꼴이 바뀌어 왔을 때, 보내기 전에 확인하는 법

by 무나주 2026. 9. 26.

내 화면에서는 멀쩡하던 견적서가 상대 화면에서는 다른 글꼴로 열립니다. 줄이 밀리고 표가 한 칸 넘어갑니다. 인쇄소에서는 글꼴을 포함해 달라는 답이 옵니다.

PDF는 글꼴을 파일 안에 실어 보낼 수도 있고, 여는 쪽 컴퓨터의 글꼴을 빌려 쓸 수도 있습니다. 후자로 만들어진 파일이 문제입니다. 같은 문서를 세 가지 방법으로 PDF로 만들고 파일 안을 열어, 무엇이 실렸고 무엇이 안 실렸는지 확인했습니다.

PDF 폰트 임베딩 실측 표. 기본 14종 폰트로 저장한 PDF는 1,673바이트에 Helvetica와 Helvetica-Bold가 쓰였고 임베딩은 0개다. 폰트를 실어 저장하면 25,835바이트에 AAAAAA+MalgunGothic이 FontFile2로 들어가 2개 중 1개가 임베딩된다. 워드에서 PDF로 내보내면 35,829바이트에 ABCDEE+맑은 고딕이 FontFile2로 들어가 1개 중 1개가 임베딩된다. 측정 환경은 윈도우 11, 파이썬 3.14.6, pypdf 6.13.2

파일 안에 실렸는지는 키 하나로 갈립니다

PDF는 쓰인 글꼴마다 설명 항목을 하나씩 둡니다. 그 안에 /FontFile, /FontFile2, /FontFile3 중 하나가 있으면 글꼴 데이터가 파일 안에 들어 있다는 뜻입니다. 셋 중 아무것도 없으면 이름만 적어 두고 실제 모양은 여는 쪽에 맡긴 것입니다.

만든 방법 파일 크기 쓰인 폰트 들어 있는 키 임베딩
기본 14종 폰트로 저장 1,673 B Helvetica 없음 0 / 2
폰트를 실어 저장 25,835 B AAAAAA+MalgunGothic /FontFile2 1 / 2
워드에서 PDF 내보내기 35,829 B ABCDEE+맑은 고딕 /FontFile2 1 / 1

첫 줄이 문제의 상태입니다. 파일이 1,673바이트로 아주 가벼운 이유가 바로 글꼴을 안 실었기 때문입니다. PDF가 이상하리만치 가볍다면 글꼴이 빠졌을 가능성이 큽니다.

Helvetica처럼 오래전부터 정해진 기본 글꼴 몇 종은 어느 뷰어에나 있다고 보고 싣지 않는 것이 규칙입니다. 영문 문서에서는 큰 문제가 없지만, 인쇄기나 다른 운영체제에서 비슷한 다른 글꼴로 대체되면서 글자 폭이 달라집니다.


한 개만 실려 있어도 안심할 수 없습니다

가운데 줄을 보시면 임베딩이 2개 중 1개입니다. 한글은 실렸는데 Helvetica가 이름만 적힌 채 남아 있습니다. 실제로 화면에 안 보이는 글꼴이 자원 목록에만 남는 경우도 있습니다.

그래서 확인할 때는 목록 전체를 훑어야 합니다. 하나가 실려 있는 것을 보고 안심하면, 표 안의 숫자나 각주만 다른 글꼴이어서 그 부분만 밀리는 상황을 놓칩니다.

글꼴 이름 앞에 붙은 AAAAAA+나 ABCDEE+는 오타가 아닙니다. 쓰인 글자만 골라 실었다는 표시입니다. 견적서에 나온 글자 몇십 자만 담았기 때문에 12메가바이트가 넘는 한글 글꼴을 넣고도 파일이 35킬로바이트에 그쳤습니다.

내 PDF를 검사하는 방법

뷰어에서 확인하려면 파일 속성을 열고 글꼴 탭을 봅니다. 목록에 나온 이름 뒤에 포함됨이나 하위 집합 포함 같은 표시가 붙어 있으면 실린 것입니다. 아무 표시가 없으면 빠진 것입니다.

여러 개를 한꺼번에 봐야 한다면 아래 코드를 씁니다. 페이지마다 쓰인 글꼴을 모아 실렸는지 여부를 표시해 줍니다.

from pypdf import PdfReader

KEYS = ("/FontFile", "/FontFile2", "/FontFile3")

reader = PdfReader("quote.pdf")
seen = {}
for page in reader.pages:
    fonts = page.get("/Resources", {}).get_object().get("/Font")
    if not fonts:
        continue
    for ref in fonts.get_object().values():
        obj = ref.get_object()
        name = str(obj.get("/BaseFont", "?")).lstrip("/")
        if obj.get("/Subtype") == "/Type0":
            fd = obj["/DescendantFonts"][0].get_object().get("/FontDescriptor")
        else:
            fd = obj.get("/FontDescriptor")
        fd = fd.get_object() if fd is not None else None
        seen[name] = bool(fd) and any(k in fd for k in KEYS)

for name, ok in sorted(seen.items()):
    print(f"{'실림  ' if ok else '빠짐  '}{name}")

한 줄이라도 빠짐으로 나오면 그 글꼴이 상대 화면에서 바뀝니다.


빠져 있을 때 다시 만드는 법

워드나 한글에서 내보낼 때는 인쇄용으로 내보내기 계열의 선택지를 고르면 글꼴이 함께 실립니다. 측정에서도 워드의 PDF 내보내기는 별도 설정 없이 맑은 고딕을 실어 냈습니다.

가상 프린터로 인쇄해 만든 PDF는 드라이버 설정에 글꼴 포함 항목이 따로 있는 경우가 많으니, 고급 설정에서 켜고 다시 뽑으시면 됩니다. 그래도 빠진다면 마지막 수단으로 해당 페이지를 이미지로 변환하는 방법이 있지만, 글자 선택과 검색이 안 되고 용량이 커집니다.

글꼴에 따라서는 애초에 PDF에 실어 보내는 것이 허용되지 않기도 합니다. 내가 쓰는 글꼴이 어느 쪽인지는 파일 안의 임베딩 허용 값을 코드로 확인하는 법에서 다뤘습니다.

글꼴을 실으면 용량이 늘어납니다. 그 몫이 얼마나 되는지는 워드 문서를 PDF로 저장했을 때 용량의 71퍼센트가 폰트였던 사례에서 다뤘습니다. 받는 쪽에 그 글꼴이 없어서 다른 모양으로 바뀌는 현상 자체는 글꼴 대체로 문서가 달라 보이는 문제 쪽에 정리해 두었습니다.

 

중요한 문서를 PDF로 보내기 전에 속성의 글꼴 탭을 한 번 열어 보세요. 목록이 비어 있거나 포함 표시가 없다면, 보내기 전에 다시 만드는 것이 인쇄소에서 되돌아오는 것보다 빠릅니다.

 

위 크기와 판정은 윈도우 11에서 파이썬 3.14.6과 pypdf 6.13.2로 세 가지 방법의 PDF를 만들어 파일 안의 값을 직접 읽은 것입니다. 만드는 프로그램과 설정에 따라 실리는 글꼴은 달라집니다.