%% %% This is file `checkencodingsubset.tex', %% generated with the docstrip utility. %% %% The original source files were: %% %% lttextcomp.dtx (with options: `TS1check') %% %% This is a generated file. %% %% The source is maintained by the LaTeX Project team and bug %% reports for it can be opened at https://latex-project.org/bugs.html %% (but please observe conditions on bug reports sent to that address!) %% %% %% Copyright (C) 1993-2024 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% %% This file was generated from file(s) of the LaTeX base system. %% -------------------------------------------------------------- %% %% It may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c %% of this license or (at your option) any later version. %% The latest version of this license is in %% https://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008 or later. %% %% This file has the LPPL maintenance status "maintained". %% %% This file may only be distributed together with a copy of the LaTeX %% base system. You may however distribute the LaTeX base system without %% such generated files. %% %% The list of all files belonging to the LaTeX base distribution is %% given in the file `manifest.txt'. See also `legal.txt' for additional %% information. %% %% The list of derived (unpacked) files belonging to the distribution %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. %%% From File: lttextcomp.dtx \Providesfile{checkencodingsubset.tex} [2024/01/27 v0.5a Figure out safe TS1 encoding subsets] \let\typeoutdetails\typeout \def\doesglyphexist#1#2{\iffontchar\testFont #1 0\else 1\relax \fi} \def\glyphmissingdetails#1#2{\iffontchar\testFont #1 \else \typeoutdetails{\space\space\space ==> \string#2 (#1) is missing}\fi} \newif\ifsafesubencodingfound \newif\ifcoremisses \def\testgroup#1#2#3{% \ifnum 0 = #1% \ifnum #2<0 \typeoutdetails{All glyphs in core exist}% \else \typeoutdetails{All glyphs between sub-encoding #2 and #3 exist}% \fi \else \ifnum #2<0 \typeoutdetails{**********************************}% \typeoutdetails{Some glyphs are missing from core:}% \coremissestrue \ifsafesubencodingfound \else \def\subencodingresult{#2}% \fi \else \typeoutdetails{Some glyphs are missing from sub-encoding #2:}% \ifsafesubencodingfound \else \def\subencodingresult{#3}% \fi \fi {\let\doesglyphexist \glyphmissingdetails #1}% \safesubencodingfoundtrue \fi } \def\currsubencoding#1{\csname TS1:\ifcsname TS1:#1\endcsname #1\else ?\fi\endcsname} \DeclareFixedFont\cmrFont{TS1}{cmr}{m}{n}{10pt} \def\testallgroups#1{% \DeclareFixedFont\testFont{TS1}{#1}{m}{n}{10pt}% \ifx\testFont\cmrFont \typeout{***** Font family #1 not found ****}% \else \safesubencodingfoundfalse \coremissesfalse \typeoutdetails{^^J-----------------------------------------}% \typeoutdetails{Testing font family #1^^J(currently TS1-sub-encoding \currsubencoding{#1})}% \typeout{-----------------------------------------}% \testgroup{% \doesglyphexist{21}{\texttwelveudash}% \doesglyphexist{22}{\textthreequartersemdash}% \doesglyphexist{134}{\textbardbl}% \doesglyphexist{137}{\textcelsius}% \doesglyphexist{178}{\texttwosuperior}% \doesglyphexist{179}{\textthreesuperior}% \doesglyphexist{185}{\textonesuperior}% }{8}{9}% \testgroup{% \doesglyphexist{32}{\textblank}% \doesglyphexist{148}{\textinterrobang}% \doesglyphexist{149}{\textinterrobangdown}% \doesglyphexist{191}{\texteuro}% }{7}{8}% \testgroup{% \doesglyphexist{47}{\textfractionsolidus}% \doesglyphexist{61}{\textminus}% \doesglyphexist{87}{\textohm}% \doesglyphexist{181}{\textmu}% }{6}{7}% \testgroup{% \doesglyphexist{140}{\textflorin}% \doesglyphexist{164}{\textcurrency}% }{5}{6}% \testgroup{% \doesglyphexist{155}{\textnumero}% \doesglyphexist{157}{\textestimated}% }{4}{5}% \testgroup{% \doesglyphexist{24}{\textleftarrow}% \doesglyphexist{25}{\textrightarrow}% \doesglyphexist{94}{\textuparrow}% \doesglyphexist{95}{\textdownarrow}% \doesglyphexist{141}{\textcolonmonetary}% \doesglyphexist{142}{\textwon}% \doesglyphexist{146}{\textlira}% \doesglyphexist{150}{\textdong}% }{3}{4}% \testgroup{% \doesglyphexist{60}{\textlangle}% \doesglyphexist{62}{\textrangle}% }{2}{3}% \testgroup{% \doesglyphexist{0}{\capitalgrave}% \doesglyphexist{1}{\capitalacute}% \doesglyphexist{2}{\capitalcircumflex}% \doesglyphexist{3}{\capitaltilde}% \doesglyphexist{4}{\capitaldieresis}% \doesglyphexist{5}{\capitalhungarumlaut}% \doesglyphexist{6}{\capitalring}% \doesglyphexist{7}{\capitalcaron}% \doesglyphexist{8}{\capitalbreve}% \doesglyphexist{9}{\capitalmacron}% \doesglyphexist{10}{\capitaldotaccent}% \doesglyphexist{11}{\capitalcedilla}% \doesglyphexist{12}{\capitalogonek}% \doesglyphexist{26}{\t}% \doesglyphexist{27}{\capitaltie}% \doesglyphexist{28}{\newtie}% \doesglyphexist{29}{\capitalnewtie}% \doesglyphexist{45}{\textdblhyphen}% \doesglyphexist{48}{\textzerooldstyle}% \doesglyphexist{49}{\textoneoldstyle}% \doesglyphexist{50}{\texttwooldstyle}% \doesglyphexist{51}{\textthreeoldstyle}% \doesglyphexist{52}{\textfouroldstyle}% \doesglyphexist{53}{\textfiveoldstyle}% \doesglyphexist{54}{\textsixoldstyle}% \doesglyphexist{55}{\textsevenoldstyle}% \doesglyphexist{56}{\texteightoldstyle}% \doesglyphexist{57}{\textnineoldstyle}% \doesglyphexist{77}{\textmho}% \doesglyphexist{79}{\textbigcircle}% \doesglyphexist{91}{\textlbrackdbl}% \doesglyphexist{93}{\textrbrackdbl}% \doesglyphexist{96}{\textasciigrave}% \doesglyphexist{98}{\textborn}% \doesglyphexist{99}{\textdivorced}% \doesglyphexist{100}{\textdied}% \doesglyphexist{108}{\textleaf}% \doesglyphexist{109}{\textmarried}% \doesglyphexist{110}{\textmusicalnote}% \doesglyphexist{126}{\texttildelow}% \doesglyphexist{127}{\textdblhyphenchar}% \doesglyphexist{128}{\textasciibreve}% \doesglyphexist{129}{\textasciicaron}% \doesglyphexist{175}{\textasciimacron}% \doesglyphexist{130}{\textacutedbl}% \doesglyphexist{131}{\textgravedbl}% \doesglyphexist{138}{\textdollaroldstyle}% \doesglyphexist{139}{\textcentoldstyle}% \doesglyphexist{143}{\textnaira}% \doesglyphexist{144}{\textguarani}% \doesglyphexist{145}{\textpeso}% \doesglyphexist{147}{\textrecipe}% \doesglyphexist{152}{\textpertenthousand}% \doesglyphexist{153}{\textpilcrow}% \doesglyphexist{154}{\textbaht}% \doesglyphexist{156}{\textdiscount}% \doesglyphexist{158}{\textopenbullet}% \doesglyphexist{159}{\textservicemark}% \doesglyphexist{160}{\textlquill}% \doesglyphexist{161}{\textrquill}% \doesglyphexist{168}{\textasciidieresis}% \doesglyphexist{171}{\textcopyleft}% \doesglyphexist{173}{\textcircledP}% \doesglyphexist{180}{\textasciiacute}% \doesglyphexist{184}{\textreferencemark}% \doesglyphexist{187}{\textsurd}% }{1}{2}% \testgroup{% \doesglyphexist{79}{\textcircled}% this is not a proper test because the symbol is % usually available but not usable }{0}{1}% \testgroup{% \doesglyphexist{13}{\textquotestraightbase}% \doesglyphexist{18}{\textquotestraightdblbase}% \doesglyphexist{23}{\textcapitalcompwordmark}% \doesglyphexist{31}{\textascendercompwordmark}% \doesglyphexist{36}{\textdollar}% \doesglyphexist{39}{\textquotesingle}% \doesglyphexist{42}{\textasteriskcentered}% \doesglyphexist{132}{\textdagger}% \doesglyphexist{133}{\textdaggerdbl}% \doesglyphexist{135}{\textperthousand}% \doesglyphexist{136}{\textbullet}% \doesglyphexist{151}{\texttrademark}% \doesglyphexist{162}{\textcent}% \doesglyphexist{163}{\textsterling}% \doesglyphexist{165}{\textyen}% \doesglyphexist{166}{\textbrokenbar}% \doesglyphexist{167}{\textsection}% \doesglyphexist{169}{\textcopyright}% \doesglyphexist{170}{\textordfeminine}% \doesglyphexist{172}{\textlnot}% \doesglyphexist{174}{\textregistered}% \doesglyphexist{176}{\textdegree}% \doesglyphexist{177}{\textpm}% \doesglyphexist{182}{\textparagraph}% \doesglyphexist{183}{\textperiodcentered}% \doesglyphexist{186}{\textordmasculine}% \doesglyphexist{188}{\textonequarter}% \doesglyphexist{189}{\textonehalf}% \doesglyphexist{190}{\textthreequarters}% \doesglyphexist{214}{\texttimes}% \doesglyphexist{246}{\textdiv}% }{-1}{0}% \ifsafesubencodingfound\else \def\subencodingresult{0}% \fi \typeoutdetails{-----------------------------------------}% \typeout{TS1 encoding subset for #1\ifcoremisses \space(ignoring core misses)\fi \space (\ifnum\subencodingresult = \currsubencoding{#1} ok\else bad\fi)}% \typeout{Use sub-encoding \subencodingresult \ifnum\subencodingresult = \currsubencoding{#1}\else \space (not \currsubencoding{#1})\fi} \typeout{-----------------------------------------^^J}% \fi } \long\def\testallkerneldefinedfamilies{% \testallgroups{ccr}% {0} \testallgroups{cmbr}% {0} %%\testallgroups{cmr}% {0} % don't test this one as it is the fallback % thus reports that the family is not found \testallgroups{cmss}% {0} \testallgroups{cmtl}% {0} \testallgroups{cmtt}% {0} \testallgroups{cmvtt}% {0} \testallgroups{pxr}% {0} \testallgroups{pxss}% {0} \testallgroups{pxtt}% {0} \testallgroups{qag}% {0} \testallgroups{qbk}% {0} \testallgroups{qcr}% {0} \testallgroups{qcs}% {0} \testallgroups{qhvc}% {0} \testallgroups{qhv}% {0} \testallgroups{qpl}% {0} \testallgroups{qtm}% {0} \testallgroups{qzc}% {0} \testallgroups{txr}% {0} \testallgroups{txss}% {0} \testallgroups{txtt}% {0} \testallgroups{zi4}% {9} %% not installed normally \testallgroups{lato-LF}% {0} % with a bunch of tofu inside --- should probably be changed \testallgroups{opensans-TLF}%{0} % with a bunch of tofu inside --- should probably be changed \testallgroups{cantarell-TLF}% {0} % with a bunch of tofu inside --- should probably be changed \testallgroups{fbb-LF}% {0} % missing centoldstyle ---> 2 \testallgroups{tli}% {1} % with lots of tofu inside --- should probably be changed \testallgroups{Alegreya-OsF}% {2} \testallgroups{AlegreyaSans-OsF}% {2} \testallgroups{DejaVuSans-TLF}% {2} \testallgroups{DejaVuSansCondensed-TLF}% {2} \testallgroups{DejaVuSansMono-TLF}% {2} this is missing \textfractionsolidus which makes it 7 really \testallgroups{EBGaramond-LF}% {2} \testallgroups{Tempora-TLF}% {2} \testallgroups{Tempora-TOsF}% {2} \testallgroups{Arimo-TLF}% {3} \testallgroups{Crlt-TLF}% {3} changed from Carlito- \testallgroups{FiraSans-LF}% {3} should be 4 \testallgroups{IBMPlexSans-TLF}% {3} \testallgroups{Merriwthr-OsF}% {3} changed from Merriweather- and should be 2 \testallgroups{Montserrat-LF}% {3} now 2 \testallgroups{MontserratAlternates-LF}%{3} now 2 \testallgroups{SourceCodePro-TLF}% {3} \testallgroups{SourceCodePro-TOsF}% {3} \testallgroups{SourceSansPro-OsF}% {3} \testallgroups{SourceSerifPro-LF}% {3} \testallgroups{Tinos-TLF}% {3} \testallgroups{AccanthisADFStdNoThree-LF}%{4} \testallgroups{Cabin-TLF}% {4} \testallgroups{Caladea-TLF}% {4} \testallgroups{Chivo-LF}% {4} \testallgroups{ClearSans-TLF}% {4} \testallgroups{Coelacanth-LF}% {4} \testallgroups{CrimsonPro-LF}% {4} \testallgroups{FiraMono-TLF}% {4} \testallgroups{FiraMono-TOsF}% {4} \testallgroups{Go-TLF}% {4} \testallgroups{GoMono-TLF}% {4} \testallgroups{InriaSans-LF}% {4} \testallgroups{InriaSerif-LF}% {4} \testallgroups{LibertinusSans-LF}% {4} \testallgroups{LibertinusSerif-LF}% {4} \testallgroups{LibreBodoni-TLF}% {4} \testallgroups{LibreFranklin-TLF}% {4} \testallgroups{LinguisticsPro-LF}% {4} \testallgroups{LinguisticsPro-OsF}% {4} \testallgroups{LinuxBiolinumT-LF}% {4} \testallgroups{LinuxLibertineT-LF}% {4} \testallgroups{MerriwthrSans-OsF}% {4} name change and now 2 \testallgroups{MintSpirit-LF}% {4} \testallgroups{MintSpiritNoTwo-LF}% {4} \testallgroups{PTMono-TLF}% {4} \testallgroups{PTSans-TLF}% {4} \testallgroups{PTSansCaption-TLF}% {4} \testallgroups{PTSansNarrow-TLF}% {4} \testallgroups{PTSerif-TLF}% {4} \testallgroups{PTSerifCaption-TLF}% {4} \testallgroups{Raleway-TLF}% {4} \testallgroups{Raleway-TOsF}% {4} \testallgroups{Roboto-LF}% {4} \testallgroups{RobotoMono-TLF}% {4} \testallgroups{RobotoSlab-TLF}% {4} \testallgroups{Rosario-LF}% {4} \testallgroups{SticksTooText-LF}% {4} \testallgroups{UniversalisADFStd-LF}%{4} \testallgroups{Almndr-OsF}% {5} name change \testallgroups{Baskervaldx-LF}% {5} \testallgroups{BaskervilleF-LF}% {5} now 2 \testallgroups{Bttr-TLF}% {5} name changed from Bitter-... \testallgroups{Cinzel-LF}% {5} \testallgroups{CinzelDecorative-LF}%{5} \testallgroups{DejaVuSerif-TLF}% {5} \testallgroups{DejaVuSerifCondensed-TLF}% {5} \testallgroups{GilliusADF-LF}% {5} \testallgroups{charssil-TLF} %% missing should be 5 \testallgroups{GilliusADFCond-LF}%{5} \testallgroups{GilliusADFNoTwo-LF}%{5} \testallgroups{GilliusADFNoTwoCond-LF}%{5} \testallgroups{Lbstr-LF}% {5} name change and should be 7 \testallgroups{OldStandard-TLF}% {5} \testallgroups{PlyfrDisplay-LF}%{5} name change \testallgroups{PlyfrDisplay-OsF}% {5} name change \testallgroups{TheanoDidot-TLF}% {5} \testallgroups{TheanoDidot-TOsF}% {5} \testallgroups{TheanoModern-TLF}% {5} \testallgroups{TheanoModern-TOsF}%{5} \testallgroups{TheanoOldStyle-TLF}%{5} \testallgroups{TheanoOldStyle-TOsF}%{5} \testallgroups{Crimson-TLF}% {6} \testallgroups{IBMPlexMono-TLF}% {6} now 3 \testallgroups{IBMPlexSerif-TLF}% {6} now 3 \testallgroups{LibertinusMono-TLF}%{6} should be 8 \testallgroups{LibertinusSerifDisplay-LF}%{6} \testallgroups{LinuxLibertineDisplayT-LF}%{6} \testallgroups{LinuxLibertineMonoT-LF}%{6} \testallgroups{LinuxLibertineMonoT-TLF}%{6} \testallgroups{Ovrlck-LF}% {6} name changed \testallgroups{CormorantGaramond-LF}%{7} \testallgroups{Heuristica-TLF}% {7} \testallgroups{Heuristica-TOsF}% {7} \testallgroups{IMFELLEnglish-TLF}%{7} \testallgroups{LibreBskvl-LF}% {7} %% wrong name LibreBaskerville-TLF \testallgroups{LibreCsln-LF}% {7} changed from LibreCaslon- \testallgroups{Mrcls-LF}% {7} %% wrong name Marcellus-LF \testallgroups{NotoSans-LF}% {7} \testallgroups{NotoSansMono-TLF}%{7} now 2 \testallgroups{NotoSansMono-TOsF}%{7} now 2 \testallgroups{NotoSerif-LF}% {7} \testallgroups{Quattro-LF}% {7} changed from Quattrocento- \testallgroups{QuattroSans-LF}% {7} changed from QuattrocentoSans- \testallgroups{XCharter-TLF}% {7} now 2 \testallgroups{XCharter-TOsF}% {7} now 2 \testallgroups{erewhon-LF}% {7} now 2 \testallgroups{ComicNeue-TLF}% {7} \testallgroups{ComicNeueAngular-TLF}%{7} \testallgroups{Frm-LF}%{7} % the superiors are missing; name changed from Forum-LF \testallgroups{Cochineal-TLF}% {8} now 5 \testallgroups{AlgolRevived-TLF}%{9} } \typeout{^^J=====================================================================} \typeout{| Enter font family to check (or for kernel defined families)} \typeout{=====================================================================} \typein[\FontFamilyToCheck]{} \if!\FontFamilyToCheck! \typeout{=====================================================================} \typeout{| Detailed output? (default no)} \typeout{=====================================================================} \typein[\Details]{} \if!\Details! \def\typeoutdetails#1{} \else \let\typeoutdetails\typeout \fi \testallkerneldefinedfamilies \else \let\typeoutdetails\typeout \testallgroups\FontFamilyToCheck \fi \stop \endinput %% %% End of file `checkencodingsubset.tex'.