Wie kann ich sicherstellen, dass das System seine schriftart verwendet

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
Benutzeravatar
Eugeny Lutsenko
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 108
Registriert: Fr, 15. Mai 2020 16:16
Wohnort: Russland, der südliche Föderale Bezirk, die Stadt Krasnodar
Hat sich bedankt: 12 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Wie kann ich sicherstellen, dass das System seine schriftart verwendet

Beitrag von Eugeny Lutsenko »

Wie kann ich sicherstellen, dass das System seine schriftart verwendet? Damit die Benutzeroberfläche auf jedem Computer mit einer beliebigen Windows-Version korrekt angezeigt wird?
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wie kann ich sicherstellen, dass das System seine schriftart verwendet

Beitrag von brandelh »

Eine benutzen die alle Windowsversionen kennen, Arial z.B.
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Wie kann ich sicherstellen, dass das System seine schriftart verwendet

Beitrag von Herbert »

Meines Wissens ist Tahoma die Standard-Schriftart.
Die Dialog-Klassen haben die Schriftart als Parameter dabei. Etwas schwierig wird das Ganze bei z.B. Combo-Bxen, da mehrere Elemente die Schrift mittragen (Titel, Eingabefeld, Liste, gewählte Liste). Aber man kann das programmtechnisch lösen. Du gibst eine vor und musst schauen, dass immer dieselbe verwendet wird.
Grüsse Herbert
Immer in Bewegung...
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Wie kann ich sicherstellen, dass das System seine schriftart verwendet

Beitrag von georg »

Guten Morgen, Eugeny -


wenn Du einen XbpDialog() erstellst und KEIN XbpFont()-Objekt zuweist, verwendet der XbpDialog() und alle Childen die Standard-Schriftart des System. Dadurch ist sichergestellt, dass alle Xbase++-Programme der Systemdefinition folgen (look alike).

Wenn Du über :setFont() einen eigenen Font zuweist, wird dieser verwendet. Ausnahme: XbpMenu() und XbpMenuBar() lassen sich in Bezug auf die Schriftart nicht verändern.

Andernfalls formulieren Deine Frage bitte neu, vielleicht habe ich sie auch missverstanden.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Wie kann ich sicherstellen, dass das System seine schriftart verwendet

Beitrag von AUGE_OHR »

hi,

Eugeny meint einen Font unter verschiedenen Landes-Sprachen z.b. Kyrillisch oder Chinesisch.

das Problem : OEM <-> ANSI Konvertierung
Lösung : alles in ANSI

Problem No. 2 : DBF welche OEM sind und eine Codepage haben
Lösung : keine unter Xbase++

allgemein : weder OEM noch ANSI sind für eine Multi-Language App optimal. UNICODE ist die Lösung
gruss by OHR
Jimmy
Benutzeravatar
Eugeny Lutsenko
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 108
Registriert: Fr, 15. Mai 2020 16:16
Wohnort: Russland, der südliche Föderale Bezirk, die Stadt Krasnodar
Hat sich bedankt: 12 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Wie kann ich sicherstellen, dass das System seine schriftart verwendet

Beitrag von Eugeny Lutsenko »

Das ist die Frage. Das Eidos-System wird nicht nur in Russland verwendet: http://aidos.byethost5.com/map5.php. um das Leben der Benutzer zu erleichtern, habe ich Mehrsprachige Unterstützung, indem Sie die Unterstützung für die Schnittstelle nicht nur Russisch, sondern auch 50. Manchmal funktioniert das jedoch unbefriedigend. Vor kurzem bat mich ein Benutzer aus Mazedonien, mit der intelligenten Bildverarbeitung aus dem Brustkorb von gesunden Menschen zu helfen und mit dem Virus infiziert 19. Es stellte sich heraus, dass es am bequemsten wäre, wenn die Schnittstelle auf Russisch funktionierte. Aber auf seinem Computer ist es nicht so einfach. Ich habe ihm mit Teamviewer geholfen.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wie kann ich sicherstellen, dass das System seine schriftart verwendet

Beitrag von brandelh »

Herbert hat geschrieben: Sa, 23. Mai 2020 10:50 Meines Wissens ist Tahoma die Standard-Schriftart.
aber nur in neueren Windows Versionen, die Frage war aber welche Schriftart ist auf jedem Windows vorhanden und das ist Arial.
Aber wie Jimmy schrieb ist das nur die halbe Miete. Russisch hat ja auch noch eine andere Art der Schrift,
selbst ähnliche Sprachen brauchen andere Buchstaben und die Länge des Strings wird dadurch immer sehr unterschiedlich sein.
Das macht die Sache nicht einfacher, hinzu kommen ja noch verschiedene Bild Zoom Einstellungen 100, 125, 150 etc. % wenn man das wirklich sauber unterstützen will,
muss man die Schriftlänge und Höhe berechnen und das Formular neu formatieren. Eine echte Herausforderung.

Bei der DBF würde ich beim Speichern das Format UTF-8 nutzen, dazu muss man die Feldlänge so vergrößern dass die Strings auf jeden Fall hinein passen,
oder FOXDBF Binärstrings verwenden. In der Programmoberfläche muss man sich dann nur noch um die lokale ANSI Anzeige kümmern, die UTF-8 Texte sind eindeutig (soweit ich das beurteilen kann)

Eine einfachere Lösung bietet sich dann an, wenn englisch als gemeinsame Oberfläche akzeptiert wird, das kommt mit 7 bit aus und sieht daher immer gleich aus.
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Wie kann ich sicherstellen, dass das System seine schriftart verwendet

Beitrag von Herbert »

Hubert, Arial ist nur eine der Schriften.
https://www.autoitscript.com/autoit3/do ... /fonts.htm
Gemäss DesignGuide ist Segoe UI die empfohlene Schrift.
https://docs.microsoft.com/en-us/window ... typography
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Wie kann ich sicherstellen, dass das System seine schriftart verwendet

Beitrag von Rolf Ramacher »

es kommt auch darauf an, was du darstellen willst, sind es listen oder Tabellen? damit die Informationen unabhängig der Zeichenlänge gleich aussehen, wirst du mit Arial das nicht erreichen. Da nimmt du am besten courier New. da sehen alle Buchstaben gleich lang aus. denn ein W ist kleiner als ein I
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Wie kann ich sicherstellen, dass das System seine schriftart verwendet

Beitrag von AUGE_OHR »

hi,

ich "teste" den Header der DBF
bei OEM DBF steht bei Bit 29 ( oder 30) evtl. die Codepage

Code: Alles auswählen

   cTest := SUBSTR( cTxt, 30, 1 )                                     // 0-29 / 1-30
   // look for Codepage
   DO CASE
      CASE cTest = CHR( 0x01 )
         _CodePage := "DOS 437"
      CASE cTest = CHR( 0x02 )
         _CodePage := "DOS 850"
      CASE cTest = CHR( 0x03 )
         _CodePage := "WIN 1251"
      CASE cTest = CHR( 0xC8 )
         _CodePage := "WIN 1250"
      CASE cTest = CHR( 0x64 )
         _CodePage := "DOS 852"
      CASE cTest = CHR( 0x65 )
         _CodePage := "DOS 865"
      CASE cTest = CHR( 0x66 )
         _CodePage := "DOS 866"
      OTHERWISE
         _CodePage := STR( ASC( cTest ) )
         // ??? mehr
   ENDCASE
was unter Xbase++ fehlt ist die folgenden Möglichkeit

Code: Alles auswählen

STATIC PROCEDURE SelecLang( cPath, cDBF, cWorkArea, cBrowse )
LOCAL cCodepage
LOCAL cExt      := SP_cInxExt()
LOCAL cVia

   IF cExt = "NTX"
      cVia := "DBFNTX"
   ELSE
      cVia := "DBFCDX"
   ENDIF

   cCodepage := WinCodePage()
   IF !EMPTY( cCodepage )
      CLOSE( cDBF )
      USE (cPath+cDBF) VIA (cVia) EXCLUSIVE CODEPAGE (cCodepage)
      Domethod( cBrowse, "BrowserView", "Refresh" )
   ENDIF
RETURN

Code: Alles auswählen

STATIC FUNCTION WinCodePage()
LOCAL cRet      := ""
LOCAL aLangName := { "Basque", ;
                        "Czech 852", ;
                        "Czech ISO-8859-2", ;
                        "Czech KAM", ;
                        "Catalan", ;
                        "English", ;
                        "French", ;
                        "Galician", ;
                        "German Ansi", ;
                        "German OEM", ;
                        "Hebrew 862", ;
                        "Hebrew 1255", ;
                        "Hungarian 852", ;
                        "Hungarian CWI-2", ;
                        "Hungarian WINDOWS-1", ;
                        "Italian", ;
                        "Polish 852", ;
                        "Polish ISO-8859-1", ;
                        "Polish Mozowia", ;
                        "Portuguese", ;
                        "Romanian", ;
                        "Russian WINDOWS-1", ;
                        "Serbian ISO-8859-2", ;
                        "Serbian 852", ;
                        "Spanish" }

LOCAL aLangID := { "EU", ;
                      "CS852", ;
                      "CSISO", ;
                      "CSKAM", ;
                      "CA", ;
                      "EN", ;
                      "FR", ;
                      "GL", ;
                      "DEWIN", ;
                      "DE850", ;
                      "HE862", ;
                      "HEWIN", ;
                      "HU852", ;
                      "HUCWI", ;
                      "HUWIN", ;
                      "IT", ;
                      "PL852", ;
                      "PLISO", ;
                      "PLMAZ", ;
                      "PT", ;
                      "RO", ;
                      "RUWIN", ;
                      "SRISO", ;
                      "SR852", ;
                      "ES" }
ich kann damit in einer Listbox die Codepage auswählen und bekomme damit die Nation Einstellungen für den Font.
hb_Codepage.JPG
hb_Codepage.JPG (248.61 KiB) 6754 mal betrachtet
es fehlt Xbase++ die Option

Code: Alles auswählen

CODEPAGE (cCodepage)
womit ich ausprobieren kann welche Einstellungen ich benötige für eine unbekannte DBF.
gruss by OHR
Jimmy
Antworten