
저는 PDF 문서 모음의 페이지를 표시하는 iPhone/iPad 앱을 작업하면서 TeX을 처음 접했습니다. 컬렉션의 모든 PDF 문서에는 하나 이상의 수학 표현식이 포함되어 있습니다. 각 PDF 파일은 상당히 작지만 전체 컬렉션에는 수천 개의 파일이 있습니다.
기본 LaTeX 구성을 사용하면 각 파일에는 약 3~8개의 하위 집합 Postscript Type 1 글꼴(Latin Modern, Computer Modern 등)이 포함되며 파일마다 글꼴이 많이 반복됩니다.
문서 컬렉션의 전체 크기를 줄일 수 있는지 확인하기 위해 실험을 시도하고 있습니다. 또 다른 확실한 해결책인 작은 PDF 파일을 더 큰 PDF 파일로 병합하는 것은 여기서 다루지 않기 때문에 문제가 있습니다.
iOS 13부터 앱에 글꼴 설치가 허용됩니다. 개별 PDF 문서에 글꼴을 포함하지 않음으로써 전체 컬렉션의 크기를 줄일 수 있습니다. 대신 내 앱은 필요한 글꼴을 설치하고 iOS의 PDF 표시 프레임워크(PDFKit)가 해당 환경에서 PDF 문서를 표시하는 데 필요한 모든 글꼴을 선택하기를 바랍니다. (PDF 사양에서는 뷰어가 문서 내에서 글꼴을 찾을 수 없는 경우 기본적으로 디스플레이 환경에서 글꼴을 검색하도록 되어 있습니다.)
한 가지 제한 사항은 iOS의 새로운 글꼴 관리 프레임워크가 Apple이 "현대적인" 글꼴이라고 부르는 TrueType 및 OpenType에서만 작동한다는 것입니다. TeX가 기본적으로 사용하는 몇몇 글꼴(Computer Modern, Latin Modern 등)은 Postscript Type 1 글꼴이기 때문에 설치할 수 없습니다. Apple은 이를 "현대"가 아닌 1980년대 기술로 간주합니다.
이 실험에서는 유니코드 수학 및 OpenType 글꼴(LaTeX 사용에서 LuaLaTeX 사용으로 전환해야 함)을 사용하는 간단한 테스트 파일을 만들었습니다. 유니코드 수학을 사용해야 하는지는 잘 모르겠지만 여러 OpenType 글꼴 패키지를 가져오는 쉬운 방법이었습니다.
\documentclass{article}
\usepackage{fontspec}
\setmainfont{texgyrepagella-regular.otf}
\usepackage{unicode-math}
\usepackage{mathtools}
\setmathfont{texgyrepagella-math.otf}
\begin{document}
Here comes a math expression:
\[x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\]
\end{document}
몇 가지 문제가 발생하여 다음 질문에 대한 도움이 필요합니다.
질문 1:위 소스를 사용하여 PDF 파일을 생성한 다음 Acrobat Reader의 속성/글꼴 대화 상자에서 보면 TeXGyrePagella 글꼴이 나열되어 있지만 "Type 1(CID)"로 설명되어 있습니다. 설명에 "OpenType"과 같은 내용이 나올 것으로 예상했습니다. "Type 1(CID)"은 OpenType 글꼴의 한 종류에 대한 보다 구체적인 설명이라고 가정합니다. 누구든지 내 가정을 확인할 수 있습니까? (이 질문 끝에 있는 스크린샷을 참조하세요.)
질문 2:글꼴이 전혀 포함되지 않은 PDF 파일을 생성하려면 어떻게 해야 합니까? tex.stackexchange에서 전체 글꼴이 하위 설정 없이 포함된 PDF 파일을 생성하는 방법에 대한 많은 조언을 보았지만 그 반대의 작업을 수행하고 싶습니다. 글꼴이 포함되는 것을 원하지 않습니다.
질문 2b:\pdfcompresslevel=0
LaTeX를 실험하면서 및 명령을 사용하여 일부 포함된 글꼴을 제거할 수 있었습니다 \pdfobjcompresslevel=0
. LuaLaTeX 환경에서 이러한 명령과 동등한 것은 무엇입니까?
답변1
앞으로는 한 가지 질문으로 제한해 보시기 바랍니다만, 밀접하게 연관되어 있으니 어쨌든 답변해 드리겠습니다.
OpenType 대신 Type 1(CID)을 사용하는 이유는 무엇입니까? PDF 파일의 OpenType 글꼴을 직접 가져올 수 있지만 내가 아는 어떤 TeX 엔진에서는 이 작업이 수행되지 않습니다. 대신 특히 Type 1 기반 OpenType 글꼴(일반적으로 로 끝나는 글꼴 파일)의 경우 .otf
실제 .ttf
글리프 데이터(CFF 형식(CFF는 Type 1의 압축 버전))만 OpenType 파일에서 추출되어 PDF에 포함됩니다. OpenType 구조로 래핑되지 않고 직접 파일을 작성합니다. 이는 OpenType 글꼴에서 사용할 수 있는 정보의 작은 하위 집합일 뿐이며 특히 합자/커닝에 대한 정보는 손실됩니다. (대부분 호환성을 위해 수행되었으며 이러한 정보는 필요하지 않기 때문에: 모든 글꼴 레이아웃/합자/커닝 관련 내용은 이미 TeX 자체에서 처리되므로 이 정보를 추가할 필요가 없습니다.)
글꼴 포함을 비활성화할 수 있나요? 예, 하지만 그러면 안됩니다. OpenType에서 순수 CFF 글꼴로의 변환 및 LuaTeX의 글꼴에 대한 기타 내부 변경으로 인해 글꼴이 포함되어 있으면 모든 것이 잘 작동하지만 별도의 글꼴은 작동하지 않을 가능성이 높습니다. 따라서 다른 형식을 찾을 수 없거나 일부 값이 변경되어 글꼴이 잘못 표시되기 때문입니다. 또한 PDF 파일은 내부 글꼴이 아닌 다른 방식으로 외부 OpenType 글꼴에 액세스하고 사양에서는 일부 측면 구현이 정의되어 있으므로 TeX는 OpenType을 사용하도록 모든 것을 설정하더라도 기본적으로 외부 OpenType 글꼴에서 올바른 문자 모양을 안정적으로 선택할 수 있는 방법이 없습니다. 글꼴을 직접. 그래도 시도하고 싶다면 다음을 참조하세요.lualatex가 글꼴을 **포함하지 않도록** 강제합니다.
LuaTeX는 다음과 같습니다.
\pdfcompresslevel=0
\pdfobjcompresslevel=0
~이다
\pdfvariable compresslevel=0
\pdfvariable objcompresslevel=0
l3pdf
그러나 거의 모든 엔진에서 작동하는 동일한 작업을 수행하는 것이 더 나은 경우가 많습니다 .
\usepackage{l3pdf}
\ExplSyntaxOn
\pdf_uncompress:
\ExplSyntaxOff
그러나 압축을 비활성화해도 포함된 글꼴이 제거되지 않으므로 거기에 무엇을 보관하려고 하는지 잘 모르겠습니다.