Received: from mail.proteosys.com ([62.225.9.49]) by nummer-3.proteosys with Microsoft SMTPSVC(5.0.2195.5329); Sat, 3 May 2003 14:49:35 +0200 Received: by mail.proteosys.com (8.12.9/8.12.2) with ESMTP id h43CnVPQ021066 for ; Sat, 3 May 2003 14:49:33 +0200 Received: from sun.dante.de (root@sun.dante.de [134.100.9.52]) by rzdspc1.informatik.uni-hamburg.de (8.12.9/8.12.9) with ESMTP id h43CnMlq000715 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO); Sat, 3 May 2003 14:49:22 +0200 (CEST) MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C31172.73029980" Received: from rzdspc1.informatik.uni-hamburg.de (root@rzdspc1.informatik.uni-hamburg.de [134.100.9.61]) by sun.dante.de (8.12.9/8.12.9) with ESMTP id h43Cmxe1006591 for ; Sat, 3 May 2003 14:48:59 +0200 (CEST) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.188]) by rzdspc1.informatik.uni-hamburg.de (8.12.9/8.12.9) with ESMTP id h43Cmtlp000687 for ; Sat, 3 May 2003 14:48:55 +0200 (CEST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Received: from [212.227.126.162] (helo=mrelayng.kundenserver.de) by moutng.kundenserver.de with esmtp (Exim 3.35 #1) id 19BwRe-000511-00; Sat, 03 May 2003 14:48:50 +0200 Received: from [80.129.11.66] (helo=istrati.mittelbach-online.de) by mrelayng.kundenserver.de with asmtp (TLSv1:EDH-RSA-DES-CBC3-SHA:168) (Exim 3.35 #1) id 19BwRd-0004N4-00; Sat, 03 May 2003 14:48:50 +0200 Received: (from frank@localhost) by istrati.mittelbach-online.de (8.11.2/8.11.2/SuSE Linux 8.11.1-0.5) id h43CifB07710; Sat, 3 May 2003 14:44:42 +0200 In-Reply-To: <200304271207.h3RC7Ppt028313@postman.arcor-online.net> References: <200304271207.h3RC7Ppt028313@postman.arcor-online.net> Return-Path: X-Mailer: VM 6.96 under Emacs 20.7.1 X-OriginalArrivalTime: 03 May 2003 12:49:36.0315 (UTC) FILETIME=[73CB40B0:01C31172] X-Authentication-Warning: istrati.mittelbach-online.de: frank set sender to frank@mittelbach-online.de using -f X-Scanned-By: MIMEDefang 2.28 (www . roaringpenguin . com / mimedefang) X-Spam-Score: -29.9 () EMAIL_ATTRIBUTION,IN_REP_TO,REFERENCES,REPLY_WITH_QUOTES,USER_AGENT_VM,X_AUTH_WARNING Content-class: urn:content-classes:message Subject: Re: textcomp once more Date: Sat, 3 May 2003 13:44:41 +0100 Message-ID: <16051.47545.433641.880408@istrati.mittelbach-online.de> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: textcomp once more Thread-Index: AcMRcnPpB92+1aNVR2exAZX7ehmkfg== From: "Frank Mittelbach" To: "Walter Schmidt" Cc: , =?iso-8859-1?Q?Lars_Hellstr=F7m?= , Reply-To: "Frank Mittelbach" Status: R X-Status: X-Keywords: X-UID: 4606 This is a multi-part message in MIME format. ------_=_NextPart_001_01C31172.73029980 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Walter Schmidt writes: > On Sat, 26 Apr 2003 23:30:00 +0200, Frank Mittelbach wrote: >=20 > >After talking with Walter at the DANTE meeting in Bremen we came to = the > >conclusion that perhaps it isn't such a bad idea to make TS1 safe = for users > >(or at least he gave in on me :-) >=20 > Indeed, the need for yet another configuration file > (textcomp.cfg) does not make me happy. Now that I see the > actual implmentation, I really doubt whether all of this is > a good and useful idea. well, I still do. > > - is there a point in the generalisation implemented that would = allow using > > this even for other font encodings, eg T1? >=20 > Oh no! The use isn't worth the effort. And I guess it=20 > would slow doen LaTeX. a) as Lars pointed out this is not slowing down anything it would only = apply to something like \ng or \textperthousand and kick in only when that is actually being used b) i was thinking more in terms of a general solution that "one day" = could be made functional including, for example, then declarations within the fd = files. > - i left some of the options from earlier implementations, right now = you can > define the "default" [...] >=20 > IMHO, the default subset should be {1} rather than {5}, to > make sure that any "non-standard" symbols (if available) can > be used in additional fonts, without having to add the font > family name to textcomp.cfg. With the default being {5}, I > will be flooded with questions such as "I have installed the > font family xyz using the latest fontinst. Why can't I use > the Euro symbols?" Installing additional fonts is already=20 > very difficult. Users should not be _forced_ to edit also > textcomp.cfg, just to access all existing symbols in a font. I disagree. with proper documentation the default should be 5 so that = using textcomp is safe by default. if that produces an error then the user has = two options: - add the font to the cfg - do \usepackage[almostfull]{textcomp} % thereby modifying the default (where i think there should be a better option name) > > - if i understand Walter's list correctly then the Micropress fonts = are > > incomplete >=20 > They have more glyphs than just subset #3, but they don't > provide all of TS1; see the attached sample of BA-Math. > Oops, I just see that they provide even \textcircled, so we > must assign #0, rather than #1. I don't think that is the right approach at all. I would either use a = "safe" default or none at all. > It comes to my mind, that the idea behind the special > handling of \textcircled and \t in was to take them from=20 > the OMS and OML encodings, when textcomp has been loaded=20 > with an appropriate option. In this case, textcomp would=20 > not overwrite the existing definitions which point to OMS=20 > and OML. Now that the character set is defined on a=20 > "per font" base, rather than through a package option, this > cannot be implemented any longer. =20 good point. it can be implemented though, only i completely overlooked it. Doing the implementation properly then also takes care of faking = other commands like \texteuro. > Maybe we should give up > #1 entirely. no, that only means you either have it never or always. see implementation below. > > - anything else obviously strange or wrong? >=20 > The oldstyle numbers just don't fit into the scheme... well, if i see it correctly then it should be possible to find a = reasonable subset living somewhere between #4 and #1, i.e., a sort of #5/#4 plus = expert subset=20 Walter: I know that a minimal subset, eg #4+ oldstyle nums is less than = what some fonts offer, but ... > Finally, let me repeat a desciption of the TS1 subsets which > I had proposed. The comments in textcomp.cfg are not very > detailed and they are lacking my reasong (and they are in > German...).=20 sorry, i didn't find the time to translate frank ------------------------------- textcom.sty take 2 \ProvidesPackage{textcomp} [2003/05/03 v1.xx test] \def\DeclareEncodingSubset#1#2#3{\@namedef{#1:#2}{#3}} \DeclareOption{all}{\DeclareEncodingSubset{TS1}{?}{0}} \DeclareOption{full}{\DeclareEncodingSubset{TS1}{?}{1}} % was almostfull \DeclareOption{euro}{\DeclareEncodingSubset{TS1}{?}{4}} \DeclareOption{safe}{\DeclareEncodingSubset{TS1}{?}{5}} % with a faked euro ``safe'' will still allow the \texteuro \ExecuteOptions{safe} \ProcessOptions\relax % #1 accessor. eg \UseTextSymbol, \UseTextAccent % #2 encoding to access from % #3 fake accessor or error command % #4 subset id % #5 symbol or accent being defined \def\CheckEncodingSubset#1#2#3#4#5{% \ifnum #4>% \expandafter\ifx\csname #2:\f@family\endcsname\relax 0\csname #2:?\endcsname \else \csname #2:\f@family\endcsname \fi \relax \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi {#1{#2}}% {#3}% #5% } % error commands take two arguments: % #1 encoding % #2 symbol to be used \def\tc@error#1#2{% \PackageError{textcomp}% % should be latex error if general {Symbol or accent \string#2 not provided by\MessageBreak font family \f@family\space in #1 encoding}\@eha } % fake commands take one argument % #1 symbol or accent faked \def\tc@fake@euro#1{% \leavevmode \PackageWarning{textcomp}{Faking \string#1}% \valign{##\cr \vfil\hbox to 0.07em{\scriptsize=3D\hss}\vfil\cr \hbox{C}\crcr }% } % provided defaults without any cfg=20 %CM, CM-Bright, Concrete %----------------------- \DeclareEncodingSubset{TS1}{cmr} {0} \DeclareEncodingSubset{TS1}{cmss} {0} \DeclareEncodingSubset{TS1}{cmtt} {0} \DeclareEncodingSubset{TS1}{cmvtt} {0} \DeclareEncodingSubset{TS1}{cmbr} {0} \DeclareEncodingSubset{TS1}{cmtl} {0} \DeclareEncodingSubset{TS1}{ccr} {0} %PSNFSS %------ \DeclareEncodingSubset{TS1}{ptm} {5} \DeclareEncodingSubset{TS1}{pcr} {5} \DeclareEncodingSubset{TS1}{phv} {5} \DeclareEncodingSubset{TS1}{ppl} {3} \DeclareEncodingSubset{TS1}{pag} {5} \DeclareEncodingSubset{TS1}{pbk} {5} \DeclareEncodingSubset{TS1}{pnc} {5} \DeclareEncodingSubset{TS1}{pzc} {5} \DeclareEncodingSubset{TS1}{bch} {5} \DeclareEncodingSubset{TS1}{put} {5} \InputIfFileExists{textcomp.cfg}{}{} \def\tc@check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc@error} \def\tc@check@accent{\CheckEncodingSubset\UseTextAccent{TS1}\tc@error} \DeclareTextAccentDefault{\capitalcedilla}{TS1} \DeclareTextAccentDefault{\capitalogonek}{TS1} \DeclareTextAccentDefault{\capitalgrave}{TS1} \DeclareTextAccentDefault{\capitalacute}{TS1} \DeclareTextAccentDefault{\capitalcircumflex}{TS1} \DeclareTextAccentDefault{\capitaltilde}{TS1} \DeclareTextAccentDefault{\capitaldieresis}{TS1} \DeclareTextAccentDefault{\capitalhungarumlaut}{TS1} \DeclareTextAccentDefault{\capitalring}{TS1} \DeclareTextAccentDefault{\capitalcaron}{TS1} \DeclareTextAccentDefault{\capitalbreve}{TS1} \DeclareTextAccentDefault{\capitalmacron}{TS1} \DeclareTextAccentDefault{\capitaldotaccent}{TS1} \DeclareTextSymbolDefault{\textcapitalcompwordmark}{TS1} \DeclareTextSymbolDefault{\textascendercompwordmark}{TS1} \DeclareTextSymbolDefault{\textquotestraightbase}{TS1} \DeclareTextSymbolDefault{\textquotestraightdblbase}{TS1} \DeclareTextSymbolDefault{\texttwelveudash}{TS1} \DeclareTextSymbolDefault{\textthreequartersemdash}{TS1} \DeclareTextSymbolDefault{\textdollar}{TS1} \DeclareTextSymbolDefault{\textquotesingle}{TS1} \DeclareTextSymbolDefault{\textasteriskcentered}{TS1} \DeclareTextSymbolDefault{\textfractionsolidus}{TS1} \DeclareTextSymbolDefault{\textminus}{TS1} \DeclareTextSymbolDefault{\textlbrackdbl}{TS1} \DeclareTextSymbolDefault{\textrbrackdbl}{TS1} \DeclareTextSymbolDefault{\textasciigrave}{TS1} \DeclareTextSymbolDefault{\texttildelow}{TS1} \DeclareTextSymbolDefault{\textasciibreve}{TS1} \DeclareTextSymbolDefault{\textasciicaron}{TS1} \DeclareTextSymbolDefault{\textgravedbl}{TS1} \DeclareTextSymbolDefault{\textacutedbl}{TS1} \DeclareTextSymbolDefault{\textdagger}{TS1} \DeclareTextSymbolDefault{\textdaggerdbl}{TS1} \DeclareTextSymbolDefault{\textbardbl}{TS1} \DeclareTextSymbolDefault{\textperthousand}{TS1} \DeclareTextSymbolDefault{\textbullet}{TS1} \DeclareTextSymbolDefault{\textcelsius}{TS1} \DeclareTextSymbolDefault{\textflorin}{TS1} \DeclareTextSymbolDefault{\texttrademark}{TS1} \DeclareTextSymbolDefault{\textcent}{TS1} \DeclareTextSymbolDefault{\textsterling}{TS1} \DeclareTextSymbolDefault{\textyen}{TS1} \DeclareTextSymbolDefault{\textbrokenbar}{TS1} \DeclareTextSymbolDefault{\textsection}{TS1} \DeclareTextSymbolDefault{\textasciidieresis}{TS1} \DeclareTextSymbolDefault{\textcopyright}{TS1} \DeclareTextSymbolDefault{\textordfeminine}{TS1} \DeclareTextSymbolDefault{\textlnot}{TS1} \DeclareTextSymbolDefault{\textregistered}{TS1} \DeclareTextSymbolDefault{\textasciimacron}{TS1} \DeclareTextSymbolDefault{\textdegree}{TS1} \DeclareTextSymbolDefault{\textpm}{TS1} \DeclareTextSymbolDefault{\texttwosuperior}{TS1} \DeclareTextSymbolDefault{\textthreesuperior}{TS1} \DeclareTextSymbolDefault{\textasciiacute}{TS1} \DeclareTextSymbolDefault{\textmu}{TS1} \DeclareTextSymbolDefault{\textparagraph}{TS1} \DeclareTextSymbolDefault{\textperiodcentered}{TS1} \DeclareTextSymbolDefault{\textonesuperior}{TS1} \DeclareTextSymbolDefault{\textordmasculine}{TS1} \DeclareTextSymbolDefault{\textonequarter}{TS1} \DeclareTextSymbolDefault{\textonehalf}{TS1} \DeclareTextSymbolDefault{\textthreequarters}{TS1} \DeclareTextSymbolDefault{\texttimes}{TS1} \DeclareTextSymbolDefault{\textdiv}{TS1} \DeclareTextCommandDefault{\texteuro} {\CheckEncodingSubset\UseTextSymbol{TS1}\tc@fake@euro5\texteuro} \DeclareTextCommandDefault{\textohm}{\tc@check@symbol4\textohm} \DeclareTextCommandDefault{\textestimated}{\tc@check@symbol3\textestimate= d} \DeclareTextCommandDefault{\textcurrency}{\tc@check@symbol3\textcurrency}= \DeclareTextCommandDefault{\capitaltie}{\tc@check@accent2\capitaltie} \DeclareTextCommandDefault{\newtie}{\tc@check@accent2\newtie} \DeclareTextCommandDefault{\capitalnewtie}{\tc@check@accent2\capitalnewti= e} \DeclareTextCommandDefault{\textleftarrow}{\tc@check@symbol2\textleftarro= w} \DeclareTextCommandDefault{\textrightarrow}{\tc@check@symbol2\textrightar= row} \DeclareTextCommandDefault{\textblank}{\tc@check@symbol2\textblank} \DeclareTextCommandDefault{\textdblhyphen}{\tc@check@symbol2\textdblhyphe= n} \DeclareTextCommandDefault{\textzerooldstyle}{\tc@check@symbol2\textzeroo= ldstyle} \DeclareTextCommandDefault{\textoneoldstyle}{\tc@check@symbol2\textoneold= style} \DeclareTextCommandDefault{\texttwooldstyle}{\tc@check@symbol2\texttwoold= style} \DeclareTextCommandDefault{\textthreeoldstyle}{\tc@check@symbol2\textthre= eoldstyle} \DeclareTextCommandDefault{\textfouroldstyle}{\tc@check@symbol2\textfouro= ldstyle} \DeclareTextCommandDefault{\textfiveoldstyle}{\tc@check@symbol2\textfiveo= ldstyle} \DeclareTextCommandDefault{\textsixoldstyle}{\tc@check@symbol2\textsixold= style} \DeclareTextCommandDefault{\textsevenoldstyle}{\tc@check@symbol2\textseve= noldstyle} \DeclareTextCommandDefault{\texteightoldstyle}{\tc@check@symbol2\texteigh= toldstyle} \DeclareTextCommandDefault{\textnineoldstyle}{\tc@check@symbol2\textnineo= ldstyle} \DeclareTextCommandDefault{\textlangle}{\tc@check@symbol2\textlangle} \DeclareTextCommandDefault{\textrangle}{\tc@check@symbol2\textrangle} \DeclareTextCommandDefault{\textmho}{\tc@check@symbol2\textmho} \DeclareTextCommandDefault{\textbigcircle}{\tc@check@symbol2\textbigcircl= e} \DeclareTextCommandDefault{\textuparrow}{\tc@check@symbol2\textuparrow} \DeclareTextCommandDefault{\textdownarrow}{\tc@check@symbol2\textdownarro= w} \DeclareTextCommandDefault{\textborn}{\tc@check@symbol2\textborn} \DeclareTextCommandDefault{\textdivorced}{\tc@check@symbol2\textdivorced}= \DeclareTextCommandDefault{\textdied}{\tc@check@symbol2\textdied} \DeclareTextCommandDefault{\textleaf}{\tc@check@symbol2\textleaf} \DeclareTextCommandDefault{\textmarried}{\tc@check@symbol2\textmarried} \DeclareTextCommandDefault{\textmusicalnote}{\tc@check@symbol2\textmusica= lnote} \DeclareTextCommandDefault{\textdblhyphenchar}{\tc@check@symbol2\textdblh= yphenchar} \DeclareTextCommandDefault{\textdollaroldstyle}{\tc@check@symbol2\textdol= laroldstyle} \DeclareTextCommandDefault{\textcentoldstyle}{\tc@check@symbol2\textcento= ldstyle} \DeclareTextCommandDefault{\textcolonmonetary}{\tc@check@symbol2\textcolo= nmonetary} \DeclareTextCommandDefault{\textwon}{\tc@check@symbol2\textwon} \DeclareTextCommandDefault{\textnaira}{\tc@check@symbol2\textnaira} \DeclareTextCommandDefault{\textguarani}{\tc@check@symbol2\textguarani} \DeclareTextCommandDefault{\textpeso}{\tc@check@symbol2\textpeso} \DeclareTextCommandDefault{\textlira}{\tc@check@symbol2\textlira} \DeclareTextCommandDefault{\textrecipe}{\tc@check@symbol2\textrecipe} \DeclareTextCommandDefault{\textinterrobang}{\tc@check@symbol2\textinterr= obang} \DeclareTextCommandDefault{\textinterrobangdown}{\tc@check@symbol2\textin= terrobangdown} \DeclareTextCommandDefault{\textdong}{\tc@check@symbol2\textdong} \DeclareTextCommandDefault{\textpertenthousand}{\tc@check@symbol2\textper= tenthousand} \DeclareTextCommandDefault{\textpilcrow}{\tc@check@symbol2\textpilcrow} \DeclareTextCommandDefault{\textbaht}{\tc@check@symbol2\textbaht} \DeclareTextCommandDefault{\textnumero}{\tc@check@symbol2\textnumero} \DeclareTextCommandDefault{\textdiscount}{\tc@check@symbol2\textdiscount}= \DeclareTextCommandDefault{\textopenbullet}{\tc@check@symbol2\textopenbul= let} \DeclareTextCommandDefault{\textservicemark}{\tc@check@symbol2\textservic= emark} \DeclareTextCommandDefault{\textlquill}{\tc@check@symbol2\textlquill} \DeclareTextCommandDefault{\textrquill}{\tc@check@symbol2\textrquill} \DeclareTextCommandDefault{\textcopyleft}{\tc@check@symbol2\textcopyleft}= \DeclareTextCommandDefault{\textcircledP}{\tc@check@symbol2\textcircledP}= \DeclareTextCommandDefault{\textreferencemark}{\tc@check@symbol2\textrefe= rencemark} \DeclareTextCommandDefault{\textsurd}{\tc@check@symbol2\textsurd} \DeclareTextCommandDefault{\textcircled} = {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OMS}}1\textcircle= d} \DeclareTextCommandDefault{\t} {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OML}}1\t} \input{ts1enc.def} \UndeclareTextCommand{\textsterling}{OT1} \UndeclareTextCommand{\textdollar} {OT1} \UndeclareTextCommand{\textperthousand}{T1} \endinput ------_=_NextPart_001_01C31172.73029980 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Re: textcomp once more

Walter Schmidt writes:
 > On Sat, 26 Apr 2003 23:30:00 +0200, Frank = Mittelbach wrote:
 >
 > >After talking with Walter at the DANTE = meeting in Bremen we came to the
 > >conclusion that perhaps it isn't such = a bad idea to make TS1 safe for users
 > >(or at least he gave in on me = :-)
 >
 > Indeed, the need for yet another = configuration file
 > (textcomp.cfg) does not make me = happy.  Now that I see the
 > actual implmentation, I really doubt = whether all of this is
 > a good and useful idea.

well, I still do.

 > > - is there a point in the = generalisation implemented that would allow using
 > >   this even for other font = encodings, eg T1?
 >
 > Oh no!  The use isn't worth the = effort.  And I guess it
 > would slow doen LaTeX.

a) as Lars pointed out this is not slowing down = anything it would only apply
to something like \ng or \textperthousand and kick in = only when that is
actually being used

b) i was thinking more in terms of a general solution = that "one day" could be
made functional including, for example, then = declarations within the fd files.


 >  - i left some of the options from = earlier implementations, right now you can
 >    define the = "default" [...]
 >
 > IMHO, the default subset should be {1} = rather than {5}, to
 > make sure that any = "non-standard" symbols (if available) can
 > be used in additional fonts, without = having to add the font
 > family name to textcomp.cfg.  With = the default being {5}, I
 > will be flooded with questions such as = "I have installed the
 > font family xyz using the latest = fontinst.  Why can't I use
 > the Euro symbols?" Installing = additional fonts is already
 > very difficult.  Users should not be = _forced_ to edit also
 > textcomp.cfg, just to access all existing = symbols in a font.

I disagree. with proper documentation the default = should be 5 so that using
textcomp is safe by default. if that produces an = error then the user has two
options:

 - add the font to the cfg
 - do \usepackage[almostfull]{textcomp} % = thereby modifying the default

(where i think there should be a better option = name)

 > > - if i understand Walter's list = correctly then the Micropress fonts are
 > >   incomplete
 >
 > They have more glyphs than just subset #3, = but they don't
 > provide all of TS1; see the attached = sample of BA-Math.
 > Oops, I just see that they provide even = \textcircled, so we
 > must assign #0, rather than #1.

I don't think that is the right approach at all. I = would either use a "safe"
default or none at all.

 > It comes to my mind, that the idea behind = the special
 > handling of \textcircled and \t in was to = take them from
 > the OMS and OML encodings, when textcomp = has been loaded
 > with an appropriate option.  In this = case, textcomp would
 > not overwrite the existing definitions = which point to OMS
 > and OML.  Now that the character set = is defined on a
 > "per font" base, rather than = through a package option, this
 > cannot be implemented any longer.  =

good point. it can be implemented though, only i = completely overlooked
it. Doing the implementation properly then also takes = care of faking other
commands like \texteuro.

 > Maybe we should give up
 > #1 entirely.

no, that only means you either have it never or = always.

see implementation below.


 > > - anything else obviously strange or = wrong?
 >
 > The oldstyle numbers just don't fit into = the scheme...

well, if i see it correctly then it should be possible = to find a reasonable
subset living somewhere between #4 and #1, = i.e.,  a sort of #5/#4 plus expert
subset

Walter: I know that a minimal subset, eg #4+ oldstyle = nums is less than what
some fonts offer, but ...

 > Finally, let me repeat a desciption of the = TS1 subsets which
 > I had proposed.  The comments in = textcomp.cfg are not very
 > detailed and they are lacking my reasong = (and they are in
 > German...).

sorry, i didn't find the time to translate

frank


------------------------------- textcom.sty take = 2

\ProvidesPackage{textcomp}
 [2003/05/03 v1.xx test]


\def\DeclareEncodingSubset#1#2#3{\@namedef{#1:#2}{#3}}

\DeclareOption{all}{\DeclareEncodingSubset{TS1}{?}{0}}
\DeclareOption{full}{\DeclareEncodingSubset{TS1}{?}{1}} % was = almostfull
\DeclareOption{euro}{\DeclareEncodingSubset{TS1}{?}{4}}
\DeclareOption{safe}{\DeclareEncodingSubset{TS1}{?}{5}}

% with a faked euro ``safe'' will still allow the = \texteuro
\ExecuteOptions{safe}
\ProcessOptions\relax




% #1 accessor. eg \UseTextSymbol, = \UseTextAccent
% #2 encoding to access from
% #3 fake accessor or error command
% #4 subset id
% #5 symbol or accent being defined

\def\CheckEncodingSubset#1#2#3#4#5{%
    \ifnum #4>%
      = \expandafter\ifx\csname #2:\f@family\endcsname\relax
        0\csname = #2:?\endcsname
      \else
        \csname = #2:\f@family\endcsname
      \fi
   \relax
   \expandafter\@firstoftwo
  \else
   \expandafter\@secondoftwo
 \fi
  {#1{#2}}%
  {#3}%
  #5%
}

% error commands take two arguments:
% #1 encoding
% #2 symbol to be used
\def\tc@error#1#2{%
   \PackageError{textcomp}%  % should = be latex error if general
    {Symbol or accent \string#2 not = provided by\MessageBreak
     font family = \f@family\space
     in #1 encoding}\@eha
}

% fake commands take one argument
% #1 symbol or accent faked
\def\tc@fake@euro#1{%
   \leavevmode
   \PackageWarning{textcomp}{Faking = \string#1}%
   \valign{##\cr
      \vfil\hbox to = 0.07em{\scriptsize=3D\hss}\vfil\cr
      \hbox{C}\crcr
   }%
}


% provided defaults without any cfg

%CM, CM-Bright, Concrete
%-----------------------
\DeclareEncodingSubset{TS1}{cmr}     = {0}
\DeclareEncodingSubset{TS1}{cmss}    = {0}
\DeclareEncodingSubset{TS1}{cmtt}    = {0}
\DeclareEncodingSubset{TS1}{cmvtt}   = {0}
\DeclareEncodingSubset{TS1}{cmbr}    = {0}
\DeclareEncodingSubset{TS1}{cmtl}    = {0}
\DeclareEncodingSubset{TS1}{ccr}     = {0}


%PSNFSS
%------
\DeclareEncodingSubset{TS1}{ptm}     = {5}
\DeclareEncodingSubset{TS1}{pcr}     = {5}
\DeclareEncodingSubset{TS1}{phv}     = {5}
\DeclareEncodingSubset{TS1}{ppl}     = {3}
\DeclareEncodingSubset{TS1}{pag}     = {5}
\DeclareEncodingSubset{TS1}{pbk}     = {5}
\DeclareEncodingSubset{TS1}{pnc}     = {5}
\DeclareEncodingSubset{TS1}{pzc}     = {5}
\DeclareEncodingSubset{TS1}{bch}     = {5}
\DeclareEncodingSubset{TS1}{put}     = {5}

\InputIfFileExists{textcomp.cfg}{}{}


\def\tc@check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc@= error}
\def\tc@check@accent{\CheckEncodingSubset\UseTextAccent{TS1}\tc@= error}

\DeclareTextAccentDefault{\capitalcedilla}{TS1}
\DeclareTextAccentDefault{\capitalogonek}{TS1}
\DeclareTextAccentDefault{\capitalgrave}{TS1}
\DeclareTextAccentDefault{\capitalacute}{TS1}
\DeclareTextAccentDefault{\capitalcircumflex}{TS1}
\DeclareTextAccentDefault{\capitaltilde}{TS1}
\DeclareTextAccentDefault{\capitaldieresis}{TS1}
\DeclareTextAccentDefault{\capitalhungarumlaut}{TS1}
\DeclareTextAccentDefault{\capitalring}{TS1}
\DeclareTextAccentDefault{\capitalcaron}{TS1}
\DeclareTextAccentDefault{\capitalbreve}{TS1}
\DeclareTextAccentDefault{\capitalmacron}{TS1}
\DeclareTextAccentDefault{\capitaldotaccent}{TS1}
\DeclareTextSymbolDefault{\textcapitalcompwordmark}{TS1}
\DeclareTextSymbolDefault{\textascendercompwordmark}{TS1}=
\DeclareTextSymbolDefault{\textquotestraightbase}{TS1}
\DeclareTextSymbolDefault{\textquotestraightdblbase}{TS1}=
\DeclareTextSymbolDefault{\texttwelveudash}{TS1}
\DeclareTextSymbolDefault{\textthreequartersemdash}{TS1}
\DeclareTextSymbolDefault{\textdollar}{TS1}
\DeclareTextSymbolDefault{\textquotesingle}{TS1}
\DeclareTextSymbolDefault{\textasteriskcentered}{TS1}
\DeclareTextSymbolDefault{\textfractionsolidus}{TS1}
\DeclareTextSymbolDefault{\textminus}{TS1}
\DeclareTextSymbolDefault{\textlbrackdbl}{TS1}
\DeclareTextSymbolDefault{\textrbrackdbl}{TS1}
\DeclareTextSymbolDefault{\textasciigrave}{TS1}
\DeclareTextSymbolDefault{\texttildelow}{TS1}
\DeclareTextSymbolDefault{\textasciibreve}{TS1}
\DeclareTextSymbolDefault{\textasciicaron}{TS1}
\DeclareTextSymbolDefault{\textgravedbl}{TS1}
\DeclareTextSymbolDefault{\textacutedbl}{TS1}
\DeclareTextSymbolDefault{\textdagger}{TS1}
\DeclareTextSymbolDefault{\textdaggerdbl}{TS1}
\DeclareTextSymbolDefault{\textbardbl}{TS1}
\DeclareTextSymbolDefault{\textperthousand}{TS1}
\DeclareTextSymbolDefault{\textbullet}{TS1}
\DeclareTextSymbolDefault{\textcelsius}{TS1}
\DeclareTextSymbolDefault{\textflorin}{TS1}
\DeclareTextSymbolDefault{\texttrademark}{TS1}
\DeclareTextSymbolDefault{\textcent}{TS1}
\DeclareTextSymbolDefault{\textsterling}{TS1}
\DeclareTextSymbolDefault{\textyen}{TS1}
\DeclareTextSymbolDefault{\textbrokenbar}{TS1}
\DeclareTextSymbolDefault{\textsection}{TS1}
\DeclareTextSymbolDefault{\textasciidieresis}{TS1}
\DeclareTextSymbolDefault{\textcopyright}{TS1}
\DeclareTextSymbolDefault{\textordfeminine}{TS1}
\DeclareTextSymbolDefault{\textlnot}{TS1}
\DeclareTextSymbolDefault{\textregistered}{TS1}
\DeclareTextSymbolDefault{\textasciimacron}{TS1}
\DeclareTextSymbolDefault{\textdegree}{TS1}
\DeclareTextSymbolDefault{\textpm}{TS1}
\DeclareTextSymbolDefault{\texttwosuperior}{TS1}
\DeclareTextSymbolDefault{\textthreesuperior}{TS1}
\DeclareTextSymbolDefault{\textasciiacute}{TS1}
\DeclareTextSymbolDefault{\textmu}{TS1}
\DeclareTextSymbolDefault{\textparagraph}{TS1}
\DeclareTextSymbolDefault{\textperiodcentered}{TS1}
\DeclareTextSymbolDefault{\textonesuperior}{TS1}
\DeclareTextSymbolDefault{\textordmasculine}{TS1}
\DeclareTextSymbolDefault{\textonequarter}{TS1}
\DeclareTextSymbolDefault{\textonehalf}{TS1}
\DeclareTextSymbolDefault{\textthreequarters}{TS1}
\DeclareTextSymbolDefault{\texttimes}{TS1}
\DeclareTextSymbolDefault{\textdiv}{TS1}


\DeclareTextCommandDefault{\texteuro}
   = {\CheckEncodingSubset\UseTextSymbol{TS1}\tc@fake@euro5\texteuro}

\DeclareTextCommandDefault{\textohm}{\tc@check@symbol4\textohm}<= /FONT>

\DeclareTextCommandDefault{\textestimated}{\tc@check@symbol3\tex= testimated}
\DeclareTextCommandDefault{\textcurrency}{\tc@check@symbol3\text= currency}

\DeclareTextCommandDefault{\capitaltie}{\tc@check@accent2\capita= ltie}
\DeclareTextCommandDefault{\newtie}{\tc@check@accent2\newtie}
\DeclareTextCommandDefault{\capitalnewtie}{\tc@check@accent2\cap= italnewtie}
\DeclareTextCommandDefault{\textleftarrow}{\tc@check@symbol2\tex= tleftarrow}
\DeclareTextCommandDefault{\textrightarrow}{\tc@check@symbol2\te= xtrightarrow}
\DeclareTextCommandDefault{\textblank}{\tc@check@symbol2\textbla= nk}
\DeclareTextCommandDefault{\textdblhyphen}{\tc@check@symbol2\tex= tdblhyphen}
\DeclareTextCommandDefault{\textzerooldstyle}{\tc@check@symbol2\= textzerooldstyle}
\DeclareTextCommandDefault{\textoneoldstyle}{\tc@check@symbol2\t= extoneoldstyle}
\DeclareTextCommandDefault{\texttwooldstyle}{\tc@check@symbol2\t= exttwooldstyle}
\DeclareTextCommandDefault{\textthreeoldstyle}{\tc@check@symbol2= \textthreeoldstyle}
\DeclareTextCommandDefault{\textfouroldstyle}{\tc@check@symbol2\= textfouroldstyle}
\DeclareTextCommandDefault{\textfiveoldstyle}{\tc@check@symbol2\= textfiveoldstyle}
\DeclareTextCommandDefault{\textsixoldstyle}{\tc@check@symbol2\t= extsixoldstyle}
\DeclareTextCommandDefault{\textsevenoldstyle}{\tc@check@symbol2= \textsevenoldstyle}
\DeclareTextCommandDefault{\texteightoldstyle}{\tc@check@symbol2= \texteightoldstyle}
\DeclareTextCommandDefault{\textnineoldstyle}{\tc@check@symbol2\= textnineoldstyle}
\DeclareTextCommandDefault{\textlangle}{\tc@check@symbol2\textla= ngle}
\DeclareTextCommandDefault{\textrangle}{\tc@check@symbol2\textra= ngle}
\DeclareTextCommandDefault{\textmho}{\tc@check@symbol2\textmho}<= /FONT>
\DeclareTextCommandDefault{\textbigcircle}{\tc@check@symbol2\tex= tbigcircle}
\DeclareTextCommandDefault{\textuparrow}{\tc@check@symbol2\textu= parrow}
\DeclareTextCommandDefault{\textdownarrow}{\tc@check@symbol2\tex= tdownarrow}
\DeclareTextCommandDefault{\textborn}{\tc@check@symbol2\textborn= }
\DeclareTextCommandDefault{\textdivorced}{\tc@check@symbol2\text= divorced}
\DeclareTextCommandDefault{\textdied}{\tc@check@symbol2\textdied= }
\DeclareTextCommandDefault{\textleaf}{\tc@check@symbol2\textleaf= }
\DeclareTextCommandDefault{\textmarried}{\tc@check@symbol2\textm= arried}
\DeclareTextCommandDefault{\textmusicalnote}{\tc@check@symbol2\t= extmusicalnote}
\DeclareTextCommandDefault{\textdblhyphenchar}{\tc@check@symbol2= \textdblhyphenchar}
\DeclareTextCommandDefault{\textdollaroldstyle}{\tc@check@symbol= 2\textdollaroldstyle}
\DeclareTextCommandDefault{\textcentoldstyle}{\tc@check@symbol2\= textcentoldstyle}
\DeclareTextCommandDefault{\textcolonmonetary}{\tc@check@symbol2= \textcolonmonetary}
\DeclareTextCommandDefault{\textwon}{\tc@check@symbol2\textwon}<= /FONT>
\DeclareTextCommandDefault{\textnaira}{\tc@check@symbol2\textnai= ra}
\DeclareTextCommandDefault{\textguarani}{\tc@check@symbol2\textg= uarani}
\DeclareTextCommandDefault{\textpeso}{\tc@check@symbol2\textpeso= }
\DeclareTextCommandDefault{\textlira}{\tc@check@symbol2\textlira= }
\DeclareTextCommandDefault{\textrecipe}{\tc@check@symbol2\textre= cipe}
\DeclareTextCommandDefault{\textinterrobang}{\tc@check@symbol2\t= extinterrobang}
\DeclareTextCommandDefault{\textinterrobangdown}{\tc@check@symbo= l2\textinterrobangdown}
\DeclareTextCommandDefault{\textdong}{\tc@check@symbol2\textdong= }
\DeclareTextCommandDefault{\textpertenthousand}{\tc@check@symbol= 2\textpertenthousand}
\DeclareTextCommandDefault{\textpilcrow}{\tc@check@symbol2\textp= ilcrow}
\DeclareTextCommandDefault{\textbaht}{\tc@check@symbol2\textbaht= }
\DeclareTextCommandDefault{\textnumero}{\tc@check@symbol2\textnu= mero}
\DeclareTextCommandDefault{\textdiscount}{\tc@check@symbol2\text= discount}
\DeclareTextCommandDefault{\textopenbullet}{\tc@check@symbol2\te= xtopenbullet}
\DeclareTextCommandDefault{\textservicemark}{\tc@check@symbol2\t= extservicemark}
\DeclareTextCommandDefault{\textlquill}{\tc@check@symbol2\textlq= uill}
\DeclareTextCommandDefault{\textrquill}{\tc@check@symbol2\textrq= uill}
\DeclareTextCommandDefault{\textcopyleft}{\tc@check@symbol2\text= copyleft}
\DeclareTextCommandDefault{\textcircledP}{\tc@check@symbol2\text= circledP}
\DeclareTextCommandDefault{\textreferencemark}{\tc@check@symbol2= \textreferencemark}
\DeclareTextCommandDefault{\textsurd}{\tc@check@symbol2\textsurd= }


\DeclareTextCommandDefault{\textcircled}
  = {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OMS}}1\textcircle= d}
\DeclareTextCommandDefault{\t}
  = {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OML}}1\t}


\input{ts1enc.def}
\UndeclareTextCommand{\textsterling}{OT1}
\UndeclareTextCommand{\textdollar}  {OT1}
\UndeclareTextCommand{\textperthousand}{T1}
\endinput

------_=_NextPart_001_01C31172.73029980--