Systemschrift Namen in Purebasic und Java

Für allgemeine Fragen zur Programmierung mit PureBasic.
Ara
Beiträge: 32
Registriert: 29.08.2004 13:40

Systemschrift Namen in Purebasic und Java

Beitrag von Ara »

Ich habe etwas gefunden, das mir die Systemschrift Namen in Purebasic anzeigt.
Es ist alt, aber funktioniert.

Code: Alles auswählen

; English forum: 
; Author: Unknown
; Date: 21. January 2003
; OS: Windows
; Demo: No

Procedure EnumFontFamProc(*lpelf.ENUMLOGFONT, *lpntm.NEWTEXTMETRIC, FontType, lParam) 
  Debug PeekS(@*lpelf\elfLogFont\lfFaceName[0]) 
  ProcedureReturn 1 
EndProcedure 

Procedure SysInfo_Fonts() 
  hWnd = GetDesktopWindow_() 
  hDC = GetDC_(hWnd) 
  EnumFontFamilies_(hDC, 0, @EnumFontFamProc(), 0) 
  ReleaseDC_ (hWnd, hDC) 
EndProcedure 

SysInfo_Fonts()
in Java erkalte ich die Schriften mit

Code: Alles auswählen

import java.awt.Font;
import java.awt.GraphicsEnvironment;

public class Main {

  public static void main(String[] args) throws Exception {
    Font[] fonts  = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
    for (int i = 0; i < fonts.length; i++) {
      System.out.println(fonts[i].getName());
    }
  }
}
Die Ausgabe der Namen ist jedoch leider unterschiedlich.
Ein kleiner Auszug aus Purebasic

Code: Alles auswählen

Myriad Pro
Myriad Pro Cond
Myriad Pro Light
NSimSun
Niagara Engraved
Niagara Solid
Nirmala UI
Nirmala UI Semilight
Nueva Std Cond
OCR A Extended
OCR A Std
Old English Text MT
Onyx
Orator Std
Oswald
PMingLiU-ExtB
Palace Script MT
Palatino Linotype
Papyrus
und Java

Code: Alles auswählen

MyriadPro-Bold
MyriadPro-BoldCond
MyriadPro-BoldCondIt
MyriadPro-BoldIt
MyriadPro-Cond
MyriadPro-CondIt
MyriadPro-It
MyriadPro-Regular
MyriadPro-Semibold
MyriadPro-SemiboldIt
NSimSun
Niagara Engraved
Niagara Solid
Nirmala UI
Nirmala UI Fett
Nirmala UI Semilight
NuevaStd-BoldCond
NuevaStd-BoldCondItalic
NuevaStd-Cond
NuevaStd-CondItalic
OCR A Extended
OCRAStd
Old English Text MT
Onyx
OratorStd
OratorStd-Slanted
Oswald BoldItalic
PMingLiU-ExtB
Palace Script MT
Palatino Linotype
Palatino Linotype Fett
Palatino Linotype Fett Kursiv
Palatino Linotype Kursiv
Papyrus
Ich benötige die Schriften im Java Format, damit ich ein erstelltes Skript im Programm von processing#org laden kann.
Gibt es eine Möglichkeit die Namen in Purebasic im Java Format zu erhalten?
Die Auswahl der Schrift erfolgt momentan mit FontRequester.

Viele Grüße
Thomas
Win10 Pro
PureBasic 6.01 LTS
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Systemschrift Namen in Purebasic und Java

Beitrag von ccode_new »

Hi!

Versuch mal das hier:

Code: Alles auswählen

Procedure EnumFontFamProc(*lpelf.ENUMLOGFONT, *lpntm.NEWTEXTMETRIC, FontType, lParam) 
  Debug PeekS(@*lpelf\elfLogFont\lfFaceName[0]) 
  ProcedureReturn 1 
EndProcedure 

Procedure SysInfo_Fonts() 
  hWnd = GetDesktopWindow_() 
  hDC = GetDC_(hWnd) 
  ;EnumFontFamilies_(hDC, 0, @EnumFontFamProc(), 0) ;deprecated
  
  EnumFontFamiliesEx_(hDC, 0 , @EnumFontFamProc(), 0, 0)
  
  ReleaseDC_ (hWnd, hDC) 
EndProcedure 

SysInfo_Fonts()
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Ara
Beiträge: 32
Registriert: 29.08.2004 13:40

Re: Systemschrift Namen in Purebasic und Java

Beitrag von Ara »

Leider werden die Namen immer noch anders angezeigt.
Aber danke für die Mühe.

Viele Grüße
Thomas
Win10 Pro
PureBasic 6.01 LTS
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Systemschrift Namen in Purebasic und Java

Beitrag von ccode_new »

Leider werden die Namen immer noch anders angezeigt.

Aber es sollte definitiv eine große(längere) Schriftenliste angezeigt werden, oder?

Warum rufst du dein kleines Javaprogramm nicht einfach von deinem PureBasic-Programm auf und liest die Ausgabe mit Hilfe von PureBasic ein.
Eine Java-Umgebung wirst du ja wahrscheinlich installiert haben, oder?
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Antworten