2012/2/16 Petr Vokac <
v...@ujv.cz>:
> Myslim, ze zachovani diakritiky pri kopirovani z pdf zajistuje
> balicek cmap:
>
Tohle je pravda pouze částečná. Balíček cmap vloží do PDF tabulku
toUnicode. Tato tabulka obsahuje mapování byte (v kódování fontu) ->
string (unicode). Pokud font nemá příslušný glyf a je to řešeno jako
sekvence combining diacritical mark + character, pak to v principu
nejde, protože toUnicode nepovoluje zapsat mapování typu string ->
string. Problém by se dal vyřešit mapováním pomocí ActualString. V
popisu PDF je to demonstrováno na němčině, kde např. slovo Zucker
rozdělíte jako Zuk-/ker. Vložíte tedy mapování k- -> c. Na rozdíl od
toUnicode, což je tabulka vázaná na daný font, ActualString musíte
znovu uvést u každého výskytu. TeX má při sazbě pouze metrické
informace, ale neví, jak bude nakonec znak realizován. Tuto informaci
nezjistíte ani v pdftexu, ani v xetexu, jedinou možností je luatex,
kdy se dostanete programově k jakékéliv vlastnosti fontu. Musíte tedy
naprogramovat stejný algoritmus, který bude používán interně. Tím
zjistíte, jak bude slovo vloženo do PDF. K tomuto řetězci pak musíte
vygenerovat řetězec, který bude použit při kopírování a při
vyhledávání. Nezapomeňte vložit BOM (viz odpovědi Petra Sojky).
Závěr: Pokud jde o vytvoření PDF, který si (skoro) každý přečte a
vytiskne, pak máte hodně volnou ruku (ale je téměř nezbytné všechny
fonty vložit). Pokud je cílem PDF, z něhož jde i kopírovat, musíte
použít font, který to umožňuje.