![]() |
AW: Name von Unicode-Zeichen
An den Spaß kann ich mich noch gut erinnern. Habe mich dann sogar bei
![]() Bei GetGlyphIndices zeigt ein Index von $FFFF an, dass die Glyphe nicht enthalten ist (bei ScriptGetCMap ist es selbstverständlich die 0). Dann braucht man noch die jeweilige default Glyphe. Letztlich habe ich dann die ganz harte Methode benutzt, das direkte Auslesen der ![]() ![]() Und ich erwähne noch einmal: ![]() |
AW: Name von Unicode-Zeichen
Da ich leider nicht im Besitz der Komponenten bin (TB2..., SpTBX...), kann ich dein Programm nicht kompilieren.
Zwei Sachen fallen mir jedoch beim durchschauen auf: Es ist etwas suboptimal, bei jedem Aufruf von GetCharName die DLL getuname.dll zu laden und entzuladen. Hier wäre es besser, einmal statisch die Funktion GetUName in Quelltext zu definieren und zu verwenden. Du hast meine GetCharExists-Funktion im Prinzip einfach nur kopiert, ohne zu verstehen das dort passiert. Mein Code diente zu Testzwecken und muss natürlich angepasst werden. So wird nämlich hier immer die Schrift des Hauptformulars verwendet, ohne auf Änderungen in cbbFontListChange einzugehen. Hier weist du ja explizit die Schrift von cbbFontList.SelectedFont den TreeView und dem Vorschaufenster zu. Es wäre auch Ressourcen schonender, wenn du dir die Instanzen von IDWriteGdiInterop einmalig beim Programmstart holst und als Membervariable des Formulars führst. Eine Neuerzeugung von IDWriteFont ist dann nur noch notwendig, wenn cbbFontListChange aufgerufen wird. Somit würde sich die GetCharExists-Funktion verkürzen auf:
Delphi-Quellcode:
Die einmalige Erzeugung von IDWriteGdiInterop und die Neuerzeugung von IDWriteFont beim Schriftartwechsel überlasse ich dir mal als Fingerübung. :thumb:
function TfrmMain.GetCharExists(const Chr: Char): Boolean;
var HR: HRESULT; CharacterExists: BOOL; begin Result := btnShowAllChars.Checked; if Result then Exit; if Assigned(FWriteFont) then begin HR := FWriteFont.HasCharacter(Ord(Chr), CharacterExists); Result := SUCCEEDED(HR) and CharacterExists; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz