CodePage
The
following table shows the correlation of Charset name, Charset Value and
Codepage number:
Charset
Name Charset Value(hex) Codepage number
------------------------------------------------------
DEFAULT_CHARSET 1 (x01)
SYMBOL_CHARSET 2 (x02)
OEM_CHARSET 255 (xFF)
ANSI_CHARSET 0 (x00) 1252
RUSSIAN_CHARSET 204 (xCC) 1251 Rusian,Serbian,Bulgarian
Cyrillic fonts
EE_CHARSET 238 (xEE) 1250 Eastern Europe
Serbian Latin
GREEK_CHARSET 161 (xA1) 1253
TURKISH_CHARSET 162 (xA2) 1254
BALTIC_CHARSET 186 (xBA) 1257
HEBREW_CHARSET 177 (xB1) 1255
ARABIC
_CHARSET 178 (xB2) 1256
SHIFTJIS_CHARSET 128 (x80) 932
HANGEUL_CHARSET 129 (x81) 949
GB2313_CHARSET 134 (x86) 936
CHINESEBIG5_CHARSET 136 (x88) 950
|
gde je oFont font objekat kreiran kao Xbase part:
oFont
:= XbpFont():new() // Create XbpFont object
oFont:familyName := "Times New
Roman" // Describe font
oFont:height := 16
oFont:width :=
8
oFont:codePage
:= 238 // Serbian latin
oFont:create() // Create font
GraSetFont ( , oFont ) // Select font
GraStringAt( , {10,300}, "Font ŠĐČĆŽ")//
Output characters
|
Font se
najčešće ne kreira na ovaj način već kao font koji pripada aplikacionom prozoru
u kome će sva slova biti u tom fontu, pa se u tom postupku zadaje i kodna
strana, na sledeći način:
* glavni Prozor aplikacije:
oDlg := XbpDialog():new( , , aPos,
aSize,, .F. )
oDlg:title := "Main menu"
oDlg:taskList := .T.
oDlg:SysMenu := .F.
oDlg:create()
* Font:
* oDlg:drawingArea:setFontCompoundName(
"10.Arial" ) // ili
* oDlg:setFontCompoundName( "10.Arial"
) // postavi font
oDlg:setFontCompoundName(
"10.Arial" ) // prvo se postavi font
oFont := oDlg:setfont() // dobije se font objekat sa codepage =
0
oFont:codepage := 238 // promeni se codepage u novu = 238
oFont:configure() // aktivira se novi font objekat
oDlg:show()
SetAppFocus( oDlg )
|
Kod Xbase++
font koji se na ovaj način postavi za oDlg aplikacioni prozor biće od strane
Xbase++ korišćen na celoj površini aplikacionog prozora (drawingarea) i na svim
objektima koji su Parent sa aplikacionim prozorom (oDlg). Jedino kod upotrebe
tog fonta u XbpStatic okvirima
(groupbox i ostalim) font neće imati postavljenu codePage, što znači da neće
biti prikazana i štampana Serbian latin slova: ŠĐČĆŽ šđčćž. U ovim slučajevima
treba posebno postaviti isti font samo za takve objekte, na sledeći način:
oTxt := XbpStatic():new( oDlg, , {5,40}, {200,20}
)
oTxt:type := XBPSTATIC_TYPE_TEXT
oTxt:Caption := "Serbian ŠĐČĆŽ
šđčćž"
oTxt:create()
oTxt:setFont(oDlg:setfont()) // preuzmi za oTxt font postavljen za oDlg
oTxt:setFont():configure() // konfiguriši preuzeti font za oTxt
ili korak po korak i jasnije:
oFont := oDlg:SetFont()
oText:setFont(oFont)
oFont:configure()
|
Ista tehnika
promene kodne strane može se koristiti i kod eXpress++
#include
"dcdialog.ch"
FUNCTION
test_codepage_upotreba_express()
LOCAL GetList := {}, GetOptions, oDlg
//-------------------
1 -------------------
PRIVATE
oButton, oFont, cFont
@ 1,1 DCPUSHBUTTON CAPTION {|| "Test ŠĐČĆŽ
šđčćž" } OBJECT oButton ;
SIZE 20,2 ;
ACTION {|| font(getlist),; // Promena
kodne strane
DC_GetRefresh(getlist) } ;
FONT "10.Arial"
//-------------------
2 -------------------
PRIVATE
oFont1, oButton1
oFont1 := XbpFont():new() // Create XbpFont object
oFont1:familyName := "Times New
Roman" // Describe font
oFont1:height := 16
oFont1:width :=
8
oFont1:codePage :=
238 // Serbian latin
oFont1:create() // Create font
@ 3,1 DCPUSHBUTTON CAPTION {|| "Test ŠĐČĆŽ
šđčćž" } OBJECT oButton1 ;
SIZE 20,2 ;
ACTION {|| msgbox(DC_FontCompoundName(
oFont1 )),;
DC_GetRefresh(getlist) } ;
FONT DC_FontCompoundName( oFont1 )
//-----------------------------------------
DCGETOPTIONS NOMINBUTTON NOMAXBUTTON
DCREAD GUI ;
TITLE "Test codePage";
FIT ;
OPTIONS GetOptions ;
SETFOCUS @oButton ;
PARENT @oDlg ;
MODAL ; // zbog modalnog sledeceg prozora
EVAL {|o| SetAppWindow(o)} // zbog
modalnog sledeceg prozora
RETURN NIL
FUNCTION
font(GetList)
// postojeće stanje:
oFont := oButton:SetFont()
cFont := oButton:setFontcompoundname()
// naziv fonta
cCodePage := oFont:codePage
msgbox(cFont+"
"+var2char(cCodePage),"Postojeće stanje")
// novo stanje
oButton:setFontcompoundname("10.Cambria")
oFont := oButton:SetFont()
oFont:codePage := 238
oFont:configure()
oButton:setFont(oFont)
oFont := oButton:SetFont()
cFont := oButton:setFontcompoundname()
// naziv fonta
cCodePage := oFont:codePage
msgbox(cFont+"
"+var2char(cCodePage),"Novo stanje")
RETURN NIL
|
Primer Programa
u eXpress++ u kome se u različitim xbase objektima (XBPStatic, XBPPushbutton) koriste
različiti Serbian latin fontovi sa codepage 238
/*
*
FONT-AND-EXPRESS.PRG
*
(04-08-2014)
* © COBA
Systems Software
* BAST® Open
Source Project
* Business
Account Software Technology
*
www.cobasystems.com
*/
#include
"appevent.ch"
#INCLUDE
"xbp.ch"
#include
"common.ch"
#INCLUDE
"font.ch"
#INCLUDE
"gra.ch"
#INCLUDE
"dcdialog.ch"
PROCEDURE
APPSYS()
RETURN
FUNCTION
MAIN()
LOCAL GetList
:= {} ,getoptions ,oDlg, MAG1_ := SPACE(12)
LOCAL aCUR :=
{"USER32.DLL",114}
SET DATE
FORMAT TO "dd.mm.yyyy" //
formatiraj ispis datuma
SET CHARSET
TO ANSI
SET DATE
GERMAN
SET CENTURY
ON
@ 0.6,0 DCSTATIC TYPE
XBPSTATIC_TYPE_GROUPBOX OBJECT oo SIZE 53,11 ;
CAPTION {|| "SERBIAN LATIN
ŠĐČĆŽ šđčćž" } COLOR
GRA_CLR_DARKRED ;
FONT font238(16,"Cambria
Bold") // prihvata samo font objekat //*** FONT
************************************************************************
@ 3,1
DCSAY 'Objekat čiji je dnevni pazar..............................'
@ 3,35 DCGET MAG1_
@ 4,1
DCSAY 'Broj specifikacije dnevnog pazara.........................'
@ 4,35 DCGET MAG1_
@ 5,1
DCSAY 'Datum specifikacije dnevnog pazara.........................'
@ 5,35 DCGET MAG1_
@ 7,1
DCSAY 'Objekat čiji je interni račun.............................'
@ 7,35 DCGET MAG1_
@ 8,1
DCSAY 'Broj internog računa ŠĐČĆŽ.................................'
@ 8,35 DCGET MAG1_
@ 9,1
DCSAY 'Datum internog računa šđčćž................................'
@ 9,35 DCGET MAG1_
//------------------------ TOOLBAR
-----------------------------------------------
@ 12,0 DCTOOLBAR oToolBar SIZE 53,1.4 ;
BUTTONSIZE 53/5,1.4 // FONT
font238(8,"Arial Bold")
DCADDBUTTON CAPTION "Napravi ŠĐČĆŽ
šđčćž" ACCELKEY xbeK_F2 ;
TOOLTIP "" ;
CURSOR aCUR PARENT oToolBar SIZE 53/5*3;
ACTION {||pomoc() } ;
FONT font_238(12,"Cambria") //
prihvata samo string FontCompoundName
//*** FONT
********************************************************************************
DCADDBUTTON CAPTION "Help
čć" ACCELKEY xbeK_F1 ;
TOOLTIP "" ;
CURSOR aCUR PARENT oToolBar ;
ACTION {||pomoc() } ;
FONT font_238(12,"Impact")
DCADDBUTTON CAPTION "Exit"
ACCELKEY xbeK_ESC ;
TOOLTIP "" ;
CURSOR aCUR PARENT oToolBar ;
ACTION {||
DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)} ;
FONT
font_238(12,"Impact")
DCGETOPTIONS ;
NOESCAPEKEY;
SAYWIDTH 240 ;
NOMAXBUTTON NOMINBUTTON ;
BORDER XBPDLG_RECESSEDBORDERTHICK_FIXED
; // EDITPROTECT bEdit_Kljuc ;
GETFONT "10.Courier Bold";
COLORGETS { { GRA_CLR_DARKRED,
GRA_CLR_WHITE },{ GRA_CLR_DARKRED, GRA_CLR_PALEGRAY } };
SAYFONT font238(10,"Cambria
Bold") // prihvata samo objekat //*** FONT
************************************************************************
DCREAD GUI FIT;
TITLE "SERBIAN LATIN FONTS ::
ŠĐČĆŽ šđčćž" ;
OPTIONS GetOptions PARENT @oDlgx EVAL
{|o|SetAppWindow(o) } MODAL
CLEAR
TYPEAHEAD
RETURN .T.
******************************
FUNCTION
font238(fv,fn)
******************************
* DCSTATIC
TYPE XBPSTATIC_TYPE_GROUPBOX CAPTION "ŠĐČĆŽšđčćž" ;
* FONT
font238(16,"Cambria Bold")
LOCAL oFont
oFont := XbpFont():new() // Create XbpFont object
oFont:nominalPointSize := fv // 13 // veličina
oFont:familyName := fn // "Verdana Bold" // Describe
font
oFont:codePage :=
238 // Serbian latin
oFont:create() // Create font
* oFont:configure() // Configure font - samo ako
već postoji font
RETURN
oFont // vraća
XbpFont object
******************************
FUNCTION
font_238(fv,fn)
******************************
* DCADDBUTTON
CAPTION "ŠĐČĆŽšđčćž" FONT font_238(12,"Cambria")
LOCAL oFont
oFont := XbpFont():new() // Create XbpFont object
oFont:nominalPointSize := fv // 13
// veličina
oFont:familyName := fn // "Verdana Bold" // Describe
font
* oFont:compoundName := fn
// "Verdana Bold" // Describe font
oFont:codePage :=
238 // Serbian latin
oFont:create() // Create font
* oFont:configure() // Configure font - samo ako
već postoji font
*
msgbox(var2char(oFont:nominalPointSize)+"."+var2char(oFont:compoundName))
RETURN
(var2char(oFont:nominalPointSize)+"."+var2char(oFont:compoundName))
// vraća string
za font compound name
******************************
FUNCTION
font__238(oo)
******************************
* DCSTATIC
TYPE XBPSTATIC_TYPE_GROUPBOX OBJECT oo // postavlja font objekta oo
* DCREAD GUI
EVAL {|o|SetAppWindow(o),font__238(oo) }
LOCAL oFont
oFont := XbpFont():new() // Create XbpFont object
oFont:familyName := "Verdana
Bold" // Describe font
oFont:nominalPointSize := 13 // veličina
oFont:codePage :=
238 // Serbian latin
oFont:create() // Create font
* oFont:configure() // Configure font - samo
ako već postoji font
oo:setFont(oFont) // dodeli font xbase
objektu oo
* msgbox( oo:setFontcompoundname()+"
"+var2char(oFont:codePage),"Novi Font")
RETURN NIL
FUNCTION
POMOC()
LOCAL ch :=
chr(13)
msgbox(;
"Kako u
eXpress postaviti kodnu stranu 1250/238 latinica i 1251/204
ćirilica" + ch+;
"
"
+ ch+;
"Kada se
radi sa Alaska Xbase++ alatom: eXpress++ (Roger Donnay) tada" + ch+;
"se
upotreba Serbian latin fontova uključuje sa SET CHARSET TO ANSI" + ch+;
"i sa
podešavanjem windowsa u regional and language na Serbian latin" + ch+;
"Time se
dobija Charset:"
+ ch+;
" charset name: EE_CHARSET"
+ ch+;
" charset value: 238 ili (xEE)" + ch+;
" codepage number: 1250 Eastern Europe
Serbian Latin"
+ ch+;
"
"
+ ch+;
"i sa na
primer: DCPUSHBUTTON CAPTION 'ŠĐČĆŽ' FONT '14.Helv Bold'" + ch+;
"vide se
na ekranu i štampaju se na printeru Serbian latin slova" + ch+;
"
"
+ ch+;
"Međutim
fontovi Verdana, Arial, Times New Roman i drugi," + ch+;
"neće
kroz komandu: FONT '14.Verdana Bold' " + ch+;
"prihvatiti
slova ŠĐČĆŽšđčćž odnosno kodnu stranu 238" + ch+;
"
"
+ ch+;
"Iz tog
razloga mora se kodna strana 238 dodati ovim fontovima" + ch+;
"preko
posebne funkcije. U ovom primeru prikazan je način dodavanja" + ch+;
"kodne
strane putem tri različite funkcije kojim se kreira font objekat" + ch+;
"sa
željenom, kodnom stranom a zatim se taj font objekat dodaje xbase" + ch+;
"objektu
čime taj xbase objekat dobija font sa kodnom stranom 238" + ch+;
"koji
prikazuje ŠĐČĆŽ"
+ ch+;
"
"
+ ch+;
"Isto
važi i za ćirilicu. SET CHARSET TO ANSI i podešavanje Windowsa" + ch+;
"u
regional and language na Serbian cyrillic, daju Charset:" + ch+;
" charset name: RUSSIAN_CHARSET"
+ ch+;
" charset value: 204 ili (xCC)"
+ ch+;
" codepage number: 1251 Rusian, Serbian,
Bulgarian Cyrillic fonts"
+ ch+;
" "
,;
"Serbian
latin kodna strana 1250/238 i Serbian cyrillic kodna strana 1251/204")
RETURN NIL
|
Nema komentara:
Objavi komentar