Delphi Firemonkey no muestra fuentes correctamente -- windows campo con delphi campo con firemonkey campo con delphi-xe4 camp Relacionados El problema

Delphi Firemonkey does not display fonts correctly


0
vote

problema

Español

Estoy construyendo la aplicación de escritorio multiplataforma con fuente adicional (Abilene). ON Startup I Revise la fuente instalada y si no lo es, lo instalo y lo uso. Para Mac, todo parece estar bien, ¡pero la versión de Windows (y el IDE!) No muestra la fuente correctamente. Aquí está el procedimiento de instalación de fuentes:

  procedure InstallFont; const   REG_NT = 'SOFTWAREMicrosoftWindows NTCurrentVersionFonts';  var   Reg: TRegistry;   res: Boolean;   installName,FileName: UnicodeString;  begin   Reg := TRegistry.Create(KEY_ALL_ACCESS);   try     Reg.RootKey := HKEY_LOCAL_MACHINE;     res := Reg.OpenKey(REG_NT, False);     if not Res then Exit;      installName := 'Abilene Regular (TrueType)';     FileName:=ExtractFilePath(ParamCount(0)+'Abilene.ttf';     Reg.WriteString(installName, FileName);     Reg.CloseKey;   finally     Reg.Free;   end;    AddFontResourceW(PWideChar(FileName));   SendMessage(HWND_BROADCAST, WM_FONTCHANGE,0,0); end;   

Después de instalar la fuente, se muestra como atajo en el panel de control, pero todos los demás programas pueden usarlo. Incluso los Delphi pueden, pero con las aplicaciones VCL, NO FMX (ver imágenes adjuntas). He adjuntado fotos del IDE. En el tiempo de ejecución es lo mismo.

¿Hay algo que se debe hacer adicionalmente para la instalación de fuentes, especialmente para aplicaciones FMX? ¿O esto es solo un error que debe informarse a Embardaderro QC?

FMX IDE

vcl IDE

Editar: Agregar algunos detalles: Si instalo la fuente descargándola, haciendo clic con el botón derecho del ratón y elija 'Instalar', entonces todo está bien. Si lo instalo en mi proc, la fuente es visible y utilizable para todo el mundo, excepto el Delphi FMX. Delphi VCL puede usarlo también. Para probar esto, instale la fuente con mi proc en My% AppData% carpeta. Word, Excel, Delphi VCL puede usarlo. Delphi FMX no puede.

Edit2: agregado Envío (HWND_BROADCAST, WM_FONTCHANGE, 0,0). No hay cambio.

Editar3: En el cuadro de diálogo de fuente, la fuente se muestra correctamente (Imagen 3) ingrese la descripción de la imagen aquí

Original en ingles

I'm building cross-platform desktop app with additional font (Abilene). On startup I check is the font installed and if it is not, I install it and use it. For Mac everything seems to be fine, but Windows version (and the IDE!!) does not display the font correctly. Here is the font installation procedure:

procedure InstallFont; const   REG_NT = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts';  var   Reg: TRegistry;   res: Boolean;   installName,FileName: UnicodeString;  begin   Reg := TRegistry.Create(KEY_ALL_ACCESS);   try     Reg.RootKey := HKEY_LOCAL_MACHINE;     res := Reg.OpenKey(REG_NT, False);     if not Res then Exit;      installName := 'Abilene Regular (TrueType)';     FileName:=ExtractFilePath(ParamCount(0)+'\Abilene.ttf';     Reg.WriteString(installName, FileName);     Reg.CloseKey;   finally     Reg.Free;   end;    AddFontResourceW(PWideChar(FileName));   SendMessage(HWND_BROADCAST, WM_FONTCHANGE,0,0); end; 

After installing the font it is displayed as shortcut in the Control panel, but all other programs can use it. Even Delphi can, but with VCL, not FMX applications (see attached pictures). I've attached pictures from the IDE. In the runtime it's the same.

Is there anything that must be done additionally for the font installation especially for FMX apps? Or this is just a bug which must be reported to Embarcaderro QC?

FMX IDE

VCL IDE

Edit: Adding some details: If I install the font by downloading it, clicking with the right mouse button and choose 'Install' then everything is OK. If I install it by my proc then the font is visible and usable for the whole world except the Delphi FMX. Delphi VCL can use it also. To test this I install ed the font with my proc in my %APPDATA% folder. Word, Excel, Delphi VCL can use it. Delphi FMX cannot.

Edit2: Added SendMessage(HWND_BROADCAST, WM_FONTCHANGE,0,0). No change.

Edit3: In the Font dialog the font is displayed correctly (image 3) enter image description here

           
         
         

Lista de respuestas

0
 
vote
vote
La mejor respuesta
 

Obviamente, este es algún tipo de error, porque he encontrado una solución: si primero copio la font to% windir% fonts carpeta, entonces todo está bien. Incluso si hice una subcarpeta de la carpeta Windows Fonts y copiar la fuente, todo está bien también.

¿Por qué el fuego no quiere mostrar fuentes fuera de esa carpeta no tengo idea? Y, como dije, esto es solo para Windows. Mac OS está bien (uso ~ / biblioteca / fonts).

 

Obviously this is some sort of bug, because I've found a workaround: if I first copy the font to %windir%\Fonts folder then everything is OK. Even if I made a subfolder of the \windows\fonts folder and copy the font in it everything is fine also.

Why Firemonkey does not want to display fonts outside that folder I have no idea. And, as I said, this is for Windows only. Mac OS is OK (I use ~/Library/Fonts).

 
 
         
         

Relacionados problema

3  Problema de Solución para & y CRLF en Delphi XE4 con componente TXMLTRANSFORMPROVIDER  ( Workaround for and crlf issue in delphi xe4 with txmltransformprovider compone ) 
Sé que va a ser una pregunta repetida, pero aún así preguntar, ya que ninguna solución trabajó para este problema. Permítanme explicar primero la declaración ...

6  ¿Puedo definir el ayudante de grabación para TBYTES?  ( Can i define record helper for tbytes ) 
Estoy usando Delphi XE4. Intento definir una función de ayuda para TBYTES: TBytesHelper = record helper for TBytes public function GetLength: integer; en...

5  Cómo declarar un tipo establecido de un tipo de enumeración dentro de una clase genérica  ( How to declare a set type of an enum type within a generic class ) 
Me encontré con un comportamiento extraño en Delphi XE4. No puedo declarar un tipo ScriptNotify8 dentro de una clase genérica, donde se declara el tipo or...

4  Vitrtualstringtree. ¿Cómo arrastrar la dirección al nivel de la raíz?  ( Vitrtualstringtree how to dragndrop to root level ) 
a tener un árbol: Root - VirtualStringTree (no lo ve, TVirtualstringtree.rootNode) mi nodo raíz 1 mi nodo raíz 2 Segundo nodo 1 Segundo nodo 2...

6  Herramienta de prueba de unidad para Delphi XE4  ( Unit testing tool for delphi xe4 ) 
¿Cuáles son las opciones para las pruebas de la unidad en Delphi XE4? Estoy tratando de usar DUNIT, pero parece que no tenía ninguna versión oficial para XE4 ...

-2  Error de WWW Server Informes después de la solicitud posterior a los componentes directos de Internet en Delphi  ( Www server reports error after post request by internet direct components in del ) 
Estoy usando Delphi XE4 y, por lo general, uso Indy con IDHTTP.post para publicar la solicitud a los sitios web, Esta vez, siempre que intento publicar la s...

1  Error en TSQLSTORTEPROC en Delphi XE2 ¿Al importar el PROC almacenado de Oracle XE 11g?  ( Error in tsqlstoredproc in delphi xe2 when importing stored proc from oracle xe ) 
En una base de datos de Oracle tengo algunos procedimientos almacenados en un paquete. Cuando la lista de parámetros contiene enteros e intento enlazar un 99...

3  E2010 tipos incompatibles: error 'lpquery_service_configw' y 'pqueferyserviceconfiga' en Delphi XE4  ( E2010 incompatible types lpquery service configw and pqueryserviceconfiga e ) 
Tengo el siguiente código en Delphi 7 en alguna función: var objServiceConfig: PQueryServiceConfigA; ... ... objServiceConfig:= AllocMem(a...

0  Desplegando Delphi Custom Component a Android y iOS  ( Deploying delphi custom component to android and ios ) 
He creado una aplicación móvil para Android y iOS con Delphi XE5. Necesitaba un componente personalizado, así que creé un paquete y escribí mi componente. Esc...

0  Crypt_mode_cbc no funciona  ( Crypt mode cbc not working ) 
Delphixe4. Archivo de función de cifrado-descifrado con WinCryptoapi. Modo de cifrado CBC. Parece estar funcionando. Encripta y descifra. // get winapi fun...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos