True terug wanneer het teken op de opgegeven index niet kon worden gemapt naar een geldig Unicode-codepunt. De vlag wordt per teken gerapporteerd door de PDFium-tekstextractor en laat aanroepers codepunten identificeren die waarschijnlijk onjuist zijn omdat het bronfont geen bruikbare ToUnicode CMap of coderingsvector heeftproperty CharacterMapError[Index: Integer]: Boolean; // read only
| Index | Tekenindex op basis van 0 op de huidige pagina, in het bereik 0 tot CharacterCount - 1 |
CharacterMapError geeft True terug wanneer PDFium een fout tegenkwam bij het mappen van het teken op de opgegeven index naar een Unicode-codepunt. Wanneer dit True is, is de waarde die door Character[Index] wordt teruggegeven onbetrouwbaar en valt zij vaak terug op een vervangend teken (#$FFFD) of op een passthrough van de onderliggende glyph-identificatie
De vlag wordt het vaakst gezet bij PDF's die zijn geproduceerd door printerdrivers en conversietools die fontsubsets insluiten zonder overeenkomstige ToUnicode CMap, of met een CMap die niet het volledige glyph-bereik dekt. Gescande PDF's met ingebedde OCR-tekst en PDF's die aangepaste coderingsvectoren gebruiken zijn typische bronnen van mapfouten
Aanroepers die tekst uit een PDF heen en terug moeten kunnen verwerken, moeten CharacterMapError-treffers filteren of annoteren voordat ze die als doorzoekbare inhoud behandelen. Een cluster van opeenvolgende mapfouten duidt meestal op een hele tekenreeks die opnieuw via OCR moet worden uitgelezen in plaats van via de tekstlaag
True is en de huidige pagina is geparseerd; anders geeft deze False terug
var
I, BadCount: Integer;
begin
BadCount := 0;
for I := 0 to Pdf.CharacterCount - 1 do
if Pdf.CharacterMapError[I] then
begin
Memo1.Lines.Add(Format('Map error at %d (charcode $%x)',
[I, Pdf.Charcode[I]]));
Inc(BadCount);
end;
Caption := Format('%d untranslatable characters on page', [BadCount]);
end;