Yu Fontovi u Windows Aplikacijama

54
P rogramiranje u A laska X base++ i e Xpress++ Page | 1 Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI FONTOVI YU FONTOVI U WINDOWS APLIKACIJAMA Razvoj i distribucija Alaska Xbase++ Windows aplikacija Dokumentacija programskog paketa za knjigovodstvo CSYSTEMS™ Slobodan Stanojević, dipl.ing. Dragan Blagojević, dipl.ing

Transcript of Yu Fontovi u Windows Aplikacijama

Page 1: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 1

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

FONTOVI

YU FONTOVI U WINDOWS APLIKACIJAMA

Razvoj i distribucija Alaska Xbase++ Windows aplikacija

Dokumentacija programskog paketa za knjigovodstvo CSYSTEMS™

Slobodan Stanojević, dipl.ing.

Dragan Blagojević, dipl.ing

Page 2: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 2

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

PRILOZI

PRILOG 1

IZVORNI KOD PROGRAMA ZA KONVERZIJU KOJI JE DEO YU.EXE APLIKACIJE

PRILOG 2

GUI ANSI KARAKTER SET I YU FONTOVI

PRILOG 3

IZVORNI KOD PROGRAMA ZA KONVERZIJU IZ cp1250 U cp 1251 I OBRNUTO

PRILOG 4

IZVORNI KOD PROGRAMA ZA KONVERZIJU IZ DOS YUSKY 852 U cp852 I OBRNUTO

PRILOG 5

INSTALACIJA I PODEŠAVANJE ADVANTAGE DATABASE SERVERA ADS/ALS

PRILOG 6

WINDOWS GUI PRIKAZ ANSI YU FONTOVA IZ Xbase++ I DRUGIH APLIKACIJA

PRILOG 7

Cannot Store Graphic Characters in OEM Mode with XBase++

PRILOG 8

Character Sets Advantage ODBC Driver

PRILOG 9

Advantage ANSI Collation Utility

PRILOG 10

Kodna strana 1250 YU FONTOVI MySQL, InterBase, IBObjects, FIBplus, Dbexpress,

Delphi, DB2, JAVA, svuda ima velikih problema

PRILOG 11

KODNE STRANE – UNICODE - FONTOVI

Page 3: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 3

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

PRILOG 1

IZVORNI KOD PROGRAMA ZA KONVERZIJU KOJI JE DEO YU.EXE APLIKACIJE

/* * YUSLOVA.PRG * // ( 08.10.2011 ) * © COBA Systems Software * BAST® Open Source Project * Business Account Software Technology * www.cobasystems.com Važno: Da bi ovaj program ispravno radio aplikacija na svom startu u main() proceduri treba da bude postavljena na rad sa ANSI karakter setom komandom SET CHARSET TO ANSI, a Windows treba da bude podešen na Serbian (latin) kodnu stranu 1250 Dokumentacija za ovaj program data je u modulu ADS_XBASE_YU_FONT.PRG */ * SADRŽAJ: // YUSLOVA.PRG * FUNCTION YUSLOVA(red) // Provera stringa red da li sadrži YU znake za konverziju,

// i ako sadrži, poziv funkciji za konverzija u GUI ANSI za // ADS/ALS/Xbase++

// YUSLOVA.PRG * FUNCTION Convert_To_OEM(red) // Konverzija stringa red znak-po-znak: samo YU znaci // u GUI ANSI za ADS/ALS/Xbase++ // zamena za Xbase++ FUNCTION ConvToOemCP() // YUSLOVA.PRG * FUNCTION Convert_To_ANSI(red) // Konverzija stringa red znak-po-znak: samo YU znaci // u GUI ANSI za ADS/ALS/Xbase++ // zamena za Xbase++ FUNCTION ConvToAnsiCP() * Primer konverzije YU slova: *---------------------------- * Baza podataka fajl YU.DBF sadrži 1000000 slogova a svaki slog ima polje NAME * Aplikacija koja koristi tu bazu podataka ne zna da li je na napravljena iz * ADS/ALS servera ili iz Xbase++ direktnim pristupom. Na ekranu u GUI interfejsu * pojavljuju se YU znakovi koji nusu GUI ANSI YU znakovi, pa je jasno da treba * izvršiti konverziju fajla YU.DBF * *********************************** * FUNCTION konvertuj_YU_slova() *********************************** * LOCAL radno := SELECT(),RED := "" * USE YU.DBF NEW EXCLUSIVE * GO TOP * DO WHILE .NOT. EOF() * RED := ALLTRIM(NAME) * RED := YUSLOVA(RED) * REPLACE NAME WITH RED * SKIP * ENDDO * COMMIT * USE * SELECT(radno) * RETURN NIL #include "Appevent.ch" #include "Xbp.ch" #include "Gra.ch" #include "Font.ch" #include "common.ch" #include "xbtsys.ch"

Page 4: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 4

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

*################################################################################## FUNCTION YUSLOVA(red) // konverzija stringa red u OEM/ANSI ADS/ALS/Xbase++ *################################################################################## /* Objašnjenja za ovaj program data su u programu ADS_XBASE_YU_FONT.PRG 1. Proveri da li string "red" sadrži znakove iz OEM karakter seta koji se formira kada se u DBF upisuju slova preko ADS/ALS servera. Ako sadrži te znakove to je signal da se DBF fajl koji je formiran od strane ADS/ALS servera sada čita i obrađuje bez ADS/ALS servera putem direktnog pristupa Alaska Xbase aplikacije tom DBF fajlu, pa aplikacija ne ume da pročita serverov OEM zapis u DBF fajlu. Zbog toga se taj zapis mora konvertovati u OEM karakter set koji Alaska Xbase aplikacija koristi i ume da pročita. Ovde se vrši ta provera i ta konverzija: */ *---------- * konverzija OEM fonta ADS-DBF: --- Ő đ L Ă Ä -- Ü - ­ Ŕ Š --- đ L Ŕ postoje i u ANSI * u YU ANSI fontove Xbase-DBF: --- Ŕ × Đ Č Ž -- š đ č Ć ž --- *--------------------------------------------------------- * KONTROLA *--------------------------------------------------------- * * cOem_YU := Chr(21ć)+Chr(230)+Chr(47)+Chr(165)+Chr(167) +" 9 " +– * Chr(220)+Chr(14ć)+Chr(162)+Chr(1ć8)+Chr(215) * cAnsi_YU sadrži kodove: Chr(47) i Chr(1ć8) i Chr(230) pa njih ne kontroliši * ima := .F. DO WHILE .T. // proverava da li string sadrži bar jedan znak iz OEM character seta ali // ne proverava znake đ L Ŕ koji pripadaju i OEM i ANSI chracter setu // čim se pronađe prvi znak u stringu koji pripada OEM characterima // taj string ide na konverziju - EXIT *------------------------------------------------------------------ ;; := AT(CHR(21ć),red)– IF ;; q 0 –ima := .T.– EXIT – ENDIF // ;; := AT(CHR(230),red)– IF ;; q 0 –ima := .T.– EXIT – ENDIF // ;; := AT(CHR(47) ,red)– IF ;; q 0 –ima := .T.– EXIT – ENDIF ;; := AT(CHR(165),red)– IF ;; q 0 –ima := .T.– EXIT – ENDIF ;; := AT(CHR(167),red)– IF ;; q 0 –ima := .T.– EXIT – ENDIF *------------------------------------------------------------------ ;; := AT(CHR(220),red)– IF ;; q 0 –ima := .T.– EXIT – ENDIF ;; := AT(CHR(14ć),red)– IF ;; q 0 –ima := .T.– EXIT – ENDIF ;; := AT(CHR(162),red)– IF ;; q 0 –ima := .T.– EXIT – ENDIF // ;; := AT(CHR(1ć8),red)– IF ;; q 0 –ima := .T.– EXIT – ENDIF ;; := AT(CHR(215),red)– IF ;; q 0 –ima := .T.– EXIT – ENDIF *------------------------------------------------------------------ // ako se ne pronađe ni jedan znak ( Ő Ă Ä Ü ­ Š ) nema konverzije > // ovo je jedina zaštita da se ne bi ponovo konvertovali ( đ L - Ŕ ) EXIT ENDDO *--------------------------------------------------------- * KONVERZIJA *--------------------------------------------------------- IF ima = .T. // nađen je znak cOem_YU koji ukazuje da treba konvertovati string u cAnsi_YU // izvrši konverziju stringa znak po znak samo YU znake: ************************** red := Convert_To_OEM(red) ************************** // ili, izvrši konverziju stringa znak po znak sve znake: * red := ConvToOemCP(red) ********** RETURN red ********** ENDIF

Page 5: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 5

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

ima := .F. * nastavi program... /* Objašnjenja za ovaj program data su u programu ADS_XBASE_YU_FONT.PRG 2. Proveri da li string "red" sadrži znakove iz OEM karakter seta koji se formira kada se u DBF upisuju slova bez ADS/ALS servera, nego direktno iz Alaska Xbase aplikacije. Ako sadrži te znakove to je signal da se DBF fajl koji je formiran od strane Alaska Xbase aplikacije sada čita i obrađuje od strane ADS/ALS servera, pa server ne ume da pročita Alaskin OEM zapis u DBF fajlu. Zbog toga se taj zapis mora konvertovati u OEM karakter set koji server ADS/ALS koristi i ume da pročita. Ovde se vrši ta provera i ta konverzija: */ *---------- * konverzija OEM Xbase-DBF : --- Ć ! Ń ¬ Ź -- ¦ × ç ź † --- Ć × postoje i u ANSI * u YU ANSI fontove ADS/ALS: --- Ŕ × Đ Č Ž -- š đ č Ć ž --- *--------------------------------------------------------- * KONTROLA *--------------------------------------------------------- * * cOem_YU1 := Chr(2ć0)+Chr(206)+Chr(142)+Chr(13ć)+Chr(177) +" 9 " +– * Chr(2ć1)+Chr(208)+Chr(156)+Chr(1ć3)+Chr(174) * cAnsi_YU1 sadrži kodove: Chr(208) i Chr(2ć0) pa njih ne kontroliši * ima := .F. DO WHILE .T. // proverava da li string sadrži bar jedan znak iz OEM character seta ali // ne proverava znake đ L Ŕ koji pripadaju i OEM i ANSI chracter setu // čim se pronađe prvi znak u stringu koji pripada OEM characterima // taj string ide na konverziju - EXIT *------------------------------------------------------------------ // ;; := AT(CHR(2ć0),red)– IF ;; q 0 –ima := .T.– EXIT – ENDIF ;; := AT(CHR(206),red)– IF ;; q 0 – ima := .T.– EXIT – ENDIF ;; := AT(CHR(142),red)– IF ;; q 0 – ima := .T.– EXIT – ENDIF ;; := AT(CHR(13ć),red)– IF ;; q 0 – ima := .T.– EXIT – ENDIF ;; := AT(CHR(177),red)– IF ;; q 0 – ima := .T.– EXIT – ENDIF *------------------------------------------------------------------ ;; := AT(CHR(2ć1),red)– IF ;; q 0 – ima := .T.– EXIT – ENDIF // ;; := AT(CHR(208),red)– IF ;; q 0 –ima := .T.– EXIT – ENDIF ;; := AT(CHR(156),red)– IF ;; q 0 – ima := .T.– EXIT – ENDIF ;; := AT(CHR(1ć3),red)– IF ;; q 0 – ima := .T.– EXIT – ENDIF ;; := AT(CHR(174),red)– IF ;; q 0 – ima := .T.– EXIT – ENDIF *------------------------------------------------------------------ // ako se ne pronađe ni jedan znak ( ! Ń ¬ Ź ¦ ç ź † ) nema konverzije > // ovo je jedina zaštita da se ne bi ponovo konvertovali ( Ć × ) EXIT ENDDO IF ima = .T. // nađen je znak cOem_YU koji ukazuje da treba konvertovati string u cAnsi_YU // izvrši konverziju stringa znak po znak samo YU znake: *************************** red := Convert_To_ANSI(red) *************************** // ili, izvrši konverziju stringa znak po znak sve znake: * red := ConvToAnsiCP(red) ********** RETURN red ********** ENDIF //msgbox("NEMA KONVERZIJE") RETURN(red)

Page 6: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 6

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

*################################################################################## FUNCTION Convert_To_OEM(red) // Konverzija stringa red znak-po-znak: samo YU znaci // zamena za Xbase++ FUNCTION ConvToOemCP() *################################################################################## // cAnsi slova: --- Ŕ × Đ Č Ž -- š đ č Ć ž --- // cADS slova: --- Ő đ L Ă Ä -- Ü - ­ Ŕ Š --- // Ako su cAnsi slova upisivana u DBF uz posredstvom ADS servera, // pa se ta slova kasnije čitaju iz DBF bez posredstva ADS servera // (direktnim pristupom u DBF iz Alaska Xbase++), dobijaju se znakovi cADS, // koji se moraju konvertovati u cAnsi slova Xbase++ komandom: // cAnsi := ConvToOemCP(cADS) // ili pak ovom funkcijom: // cAnsi := Convert_To_OEM(cADS) // koja vrši konverziju samo YU karaktera a ostale ne dira. **** KONVERZIJA REDA ILI STRINGA * --- Ő đ L Ă Ä -- * Ü - ­ Ŕ Š * cOem_YU := Chr(21ć)+Chr(230)+Chr(47) +Chr(165)+Chr(167) +" -- "+– * Chr(220)+Chr(14ć)+Chr(162)+Chr(1ć8)+Chr(215) * --- Ŕ × Đ Č Ž -- * š đ č Ć ž * cAnsi_YU := Chr(1ć8)+Chr(208)+Chr(200)+Chr(168)+Chr(132) +" -- "+– * Chr(153)+Chr(230)+Chr(2ć2)+Chr(2ć0)+Chr(158) LOCAL i := 0, convert_red := "" LOCAL nn := LEN(ALLTRIM(red)) FOR i=1 TO nn znak := SUBSTR(red,i,1) IF ASC(znak) == 21ć // --- Ő znak := Chr(1ć8) // --- Ŕ ELSEIF ASC(znak) == 230 // --- đ znak := Chr(208) // --- × ELSEIF ASC(znak) == 47 // --- L znak := Chr(200) // --- Đ ELSEIF ASC(znak) == 165 // --- Ă znak := Chr(168) // --- Č ELSEIF ASC(znak) == 167 // --- Ä znak := Chr(132) // --- Ž ELSEIF ASC(znak) == 220 // --- Ü znak := Chr(153) // --- š ELSEIF ASC(znak) == 14ć // --- - znak := Chr(230) // --- đ ELSEIF ASC(znak) == 162 // --- ­ znak := Chr(2ć2) // --- č ELSEIF ASC(znak) == 1ć8 // --- Ŕ znak := Chr(2ć0) // --- Ć ELSEIF ASC(znak) == 215 // --- Š znak := Chr(158) // --- ž ENDIF convert_red := convert_red + znak NEXT i RETURN (convert_red)

Page 7: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 7

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

*################################################################################## FUNCTION Convert_To_ANSI(red) // Konverzija stringa red znak-po-znak: samo YU znaci // zamena za Xbase++ FUNCTION ConvToAnsiCP() *################################################################################## // cAnsi slova: --- Ŕ × Đ Č Ž -- š đ č Ć ž --- // cXbase slova: --- Ć ! Ń ¬ Ź -- ¦ × ç ź † --- // Ako su cAnsi slova upisivana u DBF bez posredstva ADS servera // (direktnim pristupom u DBF iz Alaska Xbase++), // pa se ta slova kasnije čitaju iz DBF uz posredstvo ADS servera, dobijaju se // znakovi cXbase, koji se moraju konvertovati u cAnsi slova Xbase++ komandom: // cAnsi := ConvToAnsiCP(cXbase) // ili pak ovom mojom funkcijom: // cAnsi := Convert_To_ANSI(cXbase) // koja vrši konverziju samo YU karaktera a ostale ne dira. **** KONVERZIJA REDA ILI STRINGA * --- Ć ! Ń ¬ Ź -- * ¦ × ç ź † * cOem_YU1 := Chr(2ć0)+Chr(206)+Chr(142)+Chr(13ć)+Chr(177) +" -- "+– * Chr(2ć1)+Chr(208)+Chr(156)+Chr(1ć3)+Chr(174) * --- Ŕ × Đ Č Ž -- * š đ č Ć ž * cAnsi_YU := Chr(1ć8)+Chr(208)+Chr(200)+Chr(168)+Chr(132) +" -- "+– * Chr(153)+Chr(230)+Chr(2ć2)+Chr(2ć0)+Chr(158) LOCAL i := 0, convert_red := "" LOCAL nn := LEN(ALLTRIM(red)) FOR i=1 TO nn znak := SUBSTR(red,i,1) IF ASC(znak) == 2ć0 // --- Ć znak := Chr(1ć8) // --- Ŕ ELSEIF ASC(znak) == 206 // --- ! znak := Chr(208) // --- × ELSEIF ASC(znak) == 142 // --- Ń znak := Chr(200) // --- Đ ELSEIF ASC(znak) == 13ć // --- ¬ znak := Chr(168) // --- Č ELSEIF ASC(znak) == 177 // --- Ź znak := Chr(132) // --- Ž ELSEIF ASC(znak) == 2ć1 // --- ¦ znak := Chr(153) // --- š ELSEIF ASC(znak) == 208 // --- × znak := Chr(230) // --- đ ELSEIF ASC(znak) == 156 // --- ç znak := Chr(2ć2) // --- č ELSEIF ASC(znak) == 1ć3 // --- ź znak := Chr(2ć0) // --- Ć ELSEIF ASC(znak) == 174 // --- † znak := Chr(158) // --- ž ENDIF convert_red := convert_red + znak NEXT i RETURN (convert_red)

Page 8: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 8

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

PRILOG 2

GUI ANSI KARAKTER SET I YU FONTOVI

YU FONT koji se koristi kao GUI ANSI karakter set od strane Alaska Xbase++ aplikacije a

upisuje se u DBF kao konvertovan u OEM. Ovaj YU FONT je od strane Alaska Xbase++

aplikacije pročitan iz DBF uz konverziju i istovetno prikazan kao GUI ANSI. Aplikacija ili

radi lokalno sa direktnim pristupom bazi podataka preko data base engine DBE

DBFNTX, ili radi preko servera baze podataka ADS/ALS servera, a preko DBE ADSDBE.

Slika 1

YU FONT iz DBF fajla formiranog iz aplikacije koja radi pod ADS/ALS serverom, učitan iz

tog DBF fajla iz aplikacije koja radi bez ADS/ALS servera i prikazan iz te aplikacije.

Page 9: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 9

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

Slika 2

YU FONT iz DBF fajla formiranog iz aplikacije koja radi bez ADS/ALS servera - lokalno,

učitan iz tog DBF fajla iz aplikacije koja radi pod ADS/ALS serverom i prikazan iz te

aplikacije.

Slika 3

Page 10: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 10

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

PRILOG 3

IZVORNI KOD PROGRAMA ZA KONVERZIJU IZ cp1250 U cp 1251 I OBRNUTO

Program je korišćen u CSYSTEMS ™ programskom paketu

/* * primenjeno kod programa za fiskalne kase Bingo Plus radi štampanja slova Ćirilice na fiskalnoj kasi Podesi se Windows u Regonal and Language options na Serbian (Cyrilic) i u Advanced na Serbian (Cyrilic) i tada Će Xbase++ aplikacija u GUI modu raditi po kodnoj strani 1251 Serbian (Cyrilic) Podesi se Windows u Regonal and Language options na Serbian (Latin) i u Advanced na Serbian (Latin)i tada Će Xbase++ aplikacija u GUI modu raditi po kodnoj strani 1250 Serbian (Latin) Kada aplikacija radi po kodnoj starni 1250 Serbian (latin) sve što je iz aplikacije napisano i sačuvano može se konvertovati u kodni stranu 1251 Serbian (Cyrilic) ********************************* funkcijama: FUNCTION CO1251(cString_ASCIII) FUNCTION ASC_TO_cp1251(cChar) ********************************* kako bi ga koristila Xbase++ aplikacija koja radi po kodnoj strani 1251 Serbian (Cyrilic) Kada aplikacija radi po kodnoj starni 1251 Serbian (Cyrilic) sve što je iz aplikacije napisano i sačuvano može se konvertovati u kodni stranu 1250 Serbian (Latin) ********************************* funkcijama: FUNCTION OC1251(cString_1251) FUNCTION cp1251_TO_ASC(cChar) ********************************* kako bi ga koristila Xbase++ aplikacija koja radi po kodnoj strani 1250 Serbian (Latin) */ #include "std.ch" ************************************ FUNCTION CO1251(cString_ASCIII) ************************************ * COBA ++ Blagoje (c) 2003. * kodna strana 1251 * prevodjenje ANSI ASCIII koda u kodnu stranu 1251 (Windows cirilica) * cString_ASCIII := "COBA++ Blagoje" * cString_ASCIII := "TEST STRING MALA = ; w x y § [ \ – ]" * cString_ASCIII := ]TEST STRING VELIKA = ' W X Y Q { | : "] nString_Duzina := LEN(cString_ASCIII) // duzina stringa cString_1251 := "" cXhar := "" FOR jj=1 To nString_Duzina cChar = SUBSTR(cString_ASCIII,jj,1) // izdvoji karakter cXhar = ASC_TO_cp1251(cChar) cString_1251 = cString_1251 + cXhar NEXT jj * MsgBox(cString_ASCIII+CHR(1ć)+CHR(10)+cString_1251) //*** TEST ***// /* SET CONSOLE OFF TEXT TO FILE CIR1251.TXT }cString_ASCIII }cString_1251 ENDTEXT SET CONSOLE ON */ RETURN(cString_1251)

Page 11: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 11

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

**************************************************************** FUNCTION ASC_TO_cp1251(cChar) **************************************************************** // Prevodjenje KONVERZIJA primljenog ASCIII znaka (karaktera) // u karakter po kodnoj strani 1251 (Windows cirilica) i // vracanje tog novog karaktera u glavni program. LOCAL jj, nn, nChar,nXhar,cXhar nn := 72 DECLARE a_asc§nn\,a_cir§nn\ a_asc§1\ := 75 // A a_cir§1\ := 162 a_asc§2\ := 77 // B a_cir§2\ := 16ć a_asc§ć\ := 74 // C a_cir§ć\ := 213 a_asc§3\ := 78 // D a_cir§3\ := 167 a_asc§5\ := 76 // E a_cir§5\ := 164 a_asc§7\ := 40 // F a_cir§7\ := 212 a_asc§4\ := 41 // G a_cir§4\ := 165 a_asc§8\ := 42 // H a_cir§8\ := 21ć a_asc§6\ := 4ć // I a_cir§6\ := 200 a_asc§10\ := 43 // J a_cir§10\ := 17ć a_asc§11\ := 45 // K a_cir§11\ := 202 a_asc§12\ := 47 // L a_cir§12\ := 20ć a_asc§1ć\ := 44 // M a_cir§1ć\ := 203 a_asc§13\ := 48 // N a_cir§13\ := 205 a_asc§15\ := 46 // O a_cir§15\ := 207 a_asc§17\ := 80 // P a_cir§17\ := 204 a_asc§14\ := 81 // ' a_cir§14\ := 1ć8 // LJ a_asc§18\ := 82 // R a_cir§18\ := 208 a_asc§16\ := 8ć // S a_cir§16\ := 206 a_asc§20\ := 83 // T a_cir§20\ := 210 a_asc§21\ := 85 // U a_cir§21\ := 211 a_asc§22\ := 87 // V

Page 12: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 12

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

a_cir§22\ := 163 a_asc§2ć\ := 84 // W a_cir§2ć\ := 130 // NJ a_asc§23\ := 88 // X a_cir§23\ := 13ć // DZ (DZAMBO DZET) a_asc§25\ := 86 // Y a_cir§25\ := 200 // I a_asc§27\ := 60 // Z a_cir§27\ := 166 // a_asc§24\ := 12ć // Q a_cir§24\ := 217 // S sljiva a_asc§28\ := 123 // { a_cir§28\ := 168 // Z zaba a_asc§26\ := 125 // | a_cir§26\ := 128 // DJ djordje a_asc§ć0\ := 58 // : a_cir§ć0\ := 215 // C CUCUK STANA a_asc§ć1\ := ć3 // " a_cir§ć1\ := 132 // C CURKA ******************************************************* a_asc§ć2\ := 64 // a a_cir§ć2\ := 223 a_asc§ćć\ := 68 // b a_cir§ćć\ := 225 a_asc§ć3\ := 66 // c a_cir§ć3\ := 237 a_asc§ć5\ := 100 // d a_cir§ć5\ := 228 a_asc§ć7\ := 101 // e a_cir§ć7\ := 226 a_asc§ć4\ := 102 // f a_cir§ć4\ := 233 a_asc§ć8\ := 10ć // g a_cir§ć8\ := 224 a_asc§ć6\ := 103 // h a_cir§ć6\ := 235 a_asc§30\ := 105 // i a_cir§30\ := 2ć2 a_asc§31\ := 107 // j a_cir§31\ := 188 a_asc§32\ := 104 // k a_cir§32\ := 2ć3 a_asc§3ć\ := 108 // l a_cir§3ć\ := 2ć5 a_asc§33\ := 106 // m a_cir§33\ := 2ć7 a_asc§35\ := 110 // n a_cir§35\ := 2ć4 a_asc§37\ := 111 // o a_cir§37\ := 2ć8

Page 13: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 13

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

a_asc§34\ := 112 // p a_cir§34\ := 2ć6 a_asc§38\ := 11ć // ; a_cir§38\ := 153 // lj a_asc§36\ := 113 // r a_cir§36\ := 230 a_asc§50\ := 115 // s a_cir§50\ := 231 a_asc§51\ := 117 // t a_cir§51\ := 232 a_asc§52\ := 114 // u a_cir§52\ := 23ć a_asc§5ć\ := 118 // v a_cir§5ć\ := 227 a_asc§53\ := 116 // w a_cir§53\ := 157 // nj a_asc§55\ := 120 // x a_cir§55\ := 156 // dz (dzambo dzet) a_asc§57\ := 121 // y a_cir§57\ := 2ć2 // i a_asc§54\ := 122 // z a_cir§54\ := 2ć1 // a_asc§58\ := 61 // § a_cir§58\ := 238 // s sljiva a_asc§56\ := 62 // [ a_cir§56\ := 2ć0 // z zaba a_asc§70\ := 6ć // \ a_cir§70\ := 133 // dj djordje a_asc§71\ := 56 // – a_cir§71\ := 234 // c cucuk stana a_asc§72\ := ć6 // ] a_cir§72\ := 158 // c curka * test_string_mala := "TEST STRING MALA = ; w x y § [ \ – ]" * test_string_velika := ]TEST STRING VELIKA = ' W X Y Q { | : "] ******************************************************************************** * cChar // PRIMLJENI znak koji se iz ansi ASCIII prevodi u 1251 nChar := ASC(cChar) // numerik: ansi ASC kod PRIMLJENOG znaka nXhar := nChar // numerik: 1251 ASC kod PRIMLJENOG znaka - inicijalno FOR jj=1 to nn IF a_asc§jj\ = nChar // ako nadjes u tabeli isti ansi ASC kod... nXhar = a_cir§jj\ // uzmi iz tabele odgovarajuci 1251 ASC kod EXIT // prekini dalje trazenje ENDIF NEXT jj cXhar := CHR(nXhar) // string: 1251 ASC kod PRIMLJENOG znaka prevedi u znak RETURN(cXhar)

Page 14: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 14

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

************************************ FUNCTION OC1251(cString_1251) ************************************ * COBA ++ Blagoje (c) 2003. * kodna strana 1251 * prevodjenje kodne strane 1251 (Windows cirilica) u ANSI ASCIII * cString_ASCIII := "COBA++ Blagoje" * cString_ASCIII := "TEST STRING MALA = ; w x y § [ \ – ]" * cString_ASCIII := ]TEST STRING VELIKA = ' W X Y Q { | : "] nString_Duzina := LEN(cString_1251) // duzina stringa cString_ASCIII := "" cXhar := "" FOR jj=1 To nString_Duzina cChar := SUBSTR(cString_1251,jj,1) // izdvoji karakter cXhar := cp1251_TO_ASC(cChar) cString_ASCIII := cString_ASCIII + cXhar NEXT jj * MsgBox(cString_ASCIII+CHR(1ć)+CHR(10)+cString_1251) //*** TEST ***// /* SET CONSOLE OFF TEXT TO FILE CIR1251.TXT }cString_1251 }cString_ASCIII ENDTEXT SET CONSOLE ON */ RETURN (cString_ASCIII) **************************************************************** FUNCTION cp1251_TO_ASC(cChar) **************************************************************** // Prevodjenje KONVERZIJA primljenog 1251 znaka (Windows cirilica) // u karakter ANSI ASCIII znaka i // vracanje tog novog karaktera u glavni program. LOCAL jj, nn, nChar,nXhar,cXhar nn := 72 DECLARE a_asc§nn\,a_cir§nn\ a_asc§1\ := 75 // A a_cir§1\ := 162 a_asc§2\ := 77 // B a_cir§2\ := 16ć a_asc§ć\ := 74 // C a_cir§ć\ := 213 a_asc§3\ := 78 // D a_cir§3\ := 167 a_asc§5\ := 76 // E a_cir§5\ := 164 a_asc§7\ := 40 // F a_cir§7\ := 212 a_asc§4\ := 41 // G a_cir§4\ := 165 a_asc§8\ := 42 // H a_cir§8\ := 21ć a_asc§6\ := 4ć // I a_cir§6\ := 200 a_asc§10\ := 43 // J

Page 15: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 15

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

a_cir§10\ := 17ć a_asc§11\ := 45 // K a_cir§11\ := 202 a_asc§12\ := 47 // L a_cir§12\ := 20ć a_asc§1ć\ := 44 // M a_cir§1ć\ := 203 a_asc§13\ := 48 // N a_cir§13\ := 205 a_asc§15\ := 46 // O a_cir§15\ := 207 a_asc§17\ := 80 // P a_cir§17\ := 204 a_asc§14\ := 81 // ' a_cir§14\ := 1ć8 // LJ a_asc§18\ := 82 // R a_cir§18\ := 208 a_asc§16\ := 8ć // S a_cir§16\ := 206 a_asc§20\ := 83 // T a_cir§20\ := 210 a_asc§21\ := 85 // U a_cir§21\ := 211 a_asc§22\ := 87 // V a_cir§22\ := 163 a_asc§2ć\ := 84 // W a_cir§2ć\ := 130 // NJ a_asc§23\ := 88 // X a_cir§23\ := 13ć // DZ (DZAMBO DZET) a_asc§25\ := 86 // Y a_cir§25\ := 200 // I a_asc§27\ := 60 // Z a_cir§27\ := 166 // a_asc§24\ := 12ć // Q a_cir§24\ := 217 // S sljiva a_asc§28\ := 123 // { a_cir§28\ := 168 // Z zaba a_asc§26\ := 125 // | a_cir§26\ := 128 // DJ djordje a_asc§ć0\ := 58 // : a_cir§ć0\ := 215 // C CUCUK STANA a_asc§ć1\ := ć3 // " a_cir§ć1\ := 132 // C CURKA ******************************************************* a_asc§ć2\ := 64 // a a_cir§ć2\ := 223 a_asc§ćć\ := 68 // b a_cir§ćć\ := 225 a_asc§ć3\ := 66 // c a_cir§ć3\ := 237

Page 16: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 16

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

a_asc§ć5\ := 100 // d a_cir§ć5\ := 228 a_asc§ć7\ := 101 // e a_cir§ć7\ := 226 a_asc§ć4\ := 102 // f a_cir§ć4\ := 233 a_asc§ć8\ := 10ć // g a_cir§ć8\ := 224 a_asc§ć6\ := 103 // h a_cir§ć6\ := 235 a_asc§30\ := 105 // i a_cir§30\ := 2ć2 a_asc§31\ := 107 // j a_cir§31\ := 188 a_asc§32\ := 104 // k a_cir§32\ := 2ć3 a_asc§3ć\ := 108 // l a_cir§3ć\ := 2ć5 a_asc§33\ := 106 // m a_cir§33\ := 2ć7 a_asc§35\ := 110 // n a_cir§35\ := 2ć4 a_asc§37\ := 111 // o a_cir§37\ := 2ć8 a_asc§34\ := 112 // p a_cir§34\ := 2ć6 a_asc§38\ := 11ć // ; a_cir§38\ := 153 // lj a_asc§36\ := 113 // r a_cir§36\ := 230 a_asc§50\ := 115 // s a_cir§50\ := 231 a_asc§51\ := 117 // t a_cir§51\ := 232 a_asc§52\ := 114 // u a_cir§52\ := 23ć a_asc§5ć\ := 118 // v a_cir§5ć\ := 227 a_asc§53\ := 116 // w a_cir§53\ := 157 // nj a_asc§55\ := 120 // x a_cir§55\ := 156 // dz (dzambo dzet) a_asc§57\ := 121 // y a_cir§57\ := 2ć2 // i a_asc§54\ := 122 // z a_cir§54\ := 2ć1 // a_asc§58\ := 61 // § a_cir§58\ := 238 // s sljiva a_asc§56\ := 62 // [ a_cir§56\ := 2ć0 // z zaba a_asc§70\ := 6ć // \ a_cir§70\ := 133 // dj djordje

Page 17: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 17

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

a_asc§71\ := 56 // – a_cir§71\ := 234 // c cucuk stana a_asc§72\ := ć6 // ] a_cir§72\ := 158 // c curka * test_string_mala := "TEST STRING MALA = ; w x y § [ \ – ]" * test_string_velika := ]TEST STRING VELIKA = ' W X Y Q { | : "] ******************************************************************************** * cChar // PRIMLJENI znak koji se iz 1251 prevodi u ansi ASCIII nChar := ASC(cChar) // numerik: 1251 ASC kod PRIMLJENOG znaka nXhar := nChar // numerik: 1251 ASC kod PRIMLJENOG znaka - inicijalno FOR jj=1 to nn IF a_cir§jj\ = nChar // ako nadjes u tabeli isti 1251 ASC kod... nXhar = a_asc§jj\ // uzmi iz tabele odgovarajuci ansi ASC kod EXIT // prekini dalje trazenje ENDIF NEXT jj cXhar := CHR(nXhar) // string: ansi ASC kod PRIMLJENOG znaka prevedi u znak RETURN(cXhar) ******************************************************************************************* // prima iz DBF podataka ASCII karakter: cifru od 0-6 poresku grupu // vraĆa u fiskalni printer ASCII karakter: Veliko slovo cirilice A,G,D,DJ,E,Za,I,J,K FUNCTION Slovo_za_poresku_grupu(znak) ******************************************************************************************* // Karakteri po kodnoj strani 1251 (Windows cirilica) // Velika slova cirilice za poreske grupe: * A_1251 := 162 // 0 - roba bez poreza * G_1251 := 165 // 1 - usluge bez poreza * D_1251 := 167 // 2 - roba sa porezom * Dj_1251 := 128 // ć (djordje) - usluge sa porezom * E_1251 := 184 // 3 - akcizna roba * Za_1251 := 168 // 5 (zabac u bari) * I_1251 := 200 // 7 * j_1251 := 17ć // 4 * K_1251 := 202 // 8 LOCAL slovo slovo := CHR(167) // poreska grupa za robu sa porezom IF znak = "0" slovo := CHR(162) ENDIF IF znak = "1" slovo := CHR(165) ENDIF IF znak = "2" slovo := CHR(167) ENDIF IF znak = "ć" slovo := CHR(128) ENDIF IF znak = "3" slovo := CHR(184) ENDIF IF znak = "5" slovo := CHR(168) ENDIF IF znak = "7" slovo := CHR(200) ENDIF IF znak = "4" slovo := CHR(17ć) ENDIF IF znak = "8" slovo := CHR(202) ENDIF RETURN(slovo)

Page 18: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 18

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

******************************************************************************************* // prima iz fiskalnog printera ASCII karakter: Veliko slovo cirilice A,G,D,DJ,E,Za,I,J,K // vraĆa u DBF bazu podataka ASCII karakter: cifru od 0-6 poresku grupu FUNCTION Slovo_iz_poreske_grupe(slovo) ******************************************************************************************* // Karakteri po kodnoj strani 1251 (Windows cirilica) // Velika slova cirilice za poreske grupe: * A_1251 := 162 // 0 - roba bez poreza * G_1251 := 165 // 1 - usluge bez poreza * D_1251 := 167 // 2 - roba sa porezom * Dj_1251 := 128 // ć (djordje) - usluge sa porezom * E_1251 := 184 // 3 - akcizna roba * Za_1251 := 168 // 5 (zabac u bari) * I_1251 := 200 // 7 * j_1251 := 17ć // 4 * K_1251 := 202 // 8 LOCAL znak znak := "2" // poreska grupa za robu sa porezom IF ASC(slovo) = 162 znak = "0" ENDIF IF ASC(slovo) = 165 znak = "1" ENDIF IF ASC(slovo) = 167 znak = "2" ENDIF IF ASC(slovo) = 128 znak = "ć" ENDIF IF ASC(slovo) = 184 znak = "3" ENDIF IF ASC(slovo) = 168 znak = "5" ENDIF IF ASC(slovo) = 200 znak = "7" ENDIF IF ASC(slovo) = 17ć znak = "4" ENDIF IF ASC(slovo) = 202 znak = "8" ENDIF RETURN(znak)

Page 19: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 19

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

PRILOG 4

IZVORNI KOD PROGRAMA ZA KONVERZIJU IZ DOS YUSKY 852 U cp852 I OBRNUTO

Program je korišćen u CSYSTEMS ™ programskom paketu

******************** * YU_SLOVA_852.PRG * ******************** /* 20-02-2007 VAŽNA NAPOMENA : YU SKY DOS OEM FONTOVI 852 KORISTITI U APLIKACIJAMA SLEDEČE FONTOVE Helvetica Condensed Black Helvetica Condensed FuturaCond Bold FuturaCond Monospaced Bold Monospaced Collegiate Standout ITC Bolt Bold Itc Eras Bold Motor YU SKY 852 DOS OEM Fontovi za meni na dugmadima PRIVATE Bfont := "10.Helvetica Condensed Black" PRIVATE Tfont := "10.Helvetica Condensed" ili Bfont := "10.FuturaCond Bold" Tfont := "10.FuturaCond" ili Bfont := "10.Monospaced Bold" Tfont := "6.Monospaced" YU SKY 852 DOS OEM Fontovi za naslov programa HEDER i FOOTER FONT "13.Collegiate" STATIC COLOR Q{{ aBoja2 |– FONT "13.Standout" STATIC COLOR Q{{ aBoja2 |– FONT "13.ITC Bolt Bold" STATIC COLOR Q{{ aBoja2 |– FONT "13.Itc Eras Bold" STATIC COLOR Q{{ aBoja2 |– FONT "13.Motor" STATIC COLOR Q{{ aBoja2 |– FONT SISTEM Xbase++ DOS CRT RADI SAMO U OEM KARAKTER SETU (za naše znake kodna strana 852) WINDOWS GUI RADI SAMO U ANSI KARAKTER SETU (za naše znake kodna strana 1520 Central Europe) Xbase++ DBFNTX DBE odnosno DBF fajl PRIMA UPIS TEKSTA SAMO KAO OEM KARAKTER SET Sledi funkcija za prevodjenje: FUNCTION YU_alaska_u_windows(tekst): ===================================== OEM 852 ZAPIS U SLOGOVIMA DBF FAJLA - NAPRAVLJEN STARIM YU SKY FONTOM (LATINICA), PREVODI SE U OEM 852 ZAPIS - NAPRAVLJEN WINDOWS ANSI FONTOM 1250 CE (LATINICA) Obrazlozenje zbog cega ovo: KADA JE WINDOWS SETOVAN NA ANSI YU FONT 1250 CE, XBASE++ APLIKACIJA NE MOZE DA PRIKAZE ZAPIS NAPRAVLJEN OEM YU SKY FONTOM KAO YU ZNAKOVE, ALI SVAKI OEM 852 ZAPIS NAPRAVLJEN ANSI CE 1250 FONTOM MOZE DA PRIKAZE SA YU ZNACIMA. Treba kod ovoga voditi racuna o sledecem: ako nije aktivirana komanda SET CHARSET TO ANSI KADA JE WINDOWS SETOVAN NA YU FONT 1250 CE, XBASE++ AUTOMATSKI PREVODI 852 ZAPIS IZ DBF FAJLA U YU ZNAKE I PRIKAZUJE GA SAMO NA EKRANU --- ALI KOD STAMPE NE PREVODI 852 ZAPIS U YU ZNAKE PA WINDOWS NE MOZE DA PRIKAZE YU ZNAKE, VEC PRIKAZIJE 852 NECITLJIVE KARAKTERE. Ovaj problem se tada resava funkcijom: FUNCTION alaska_u_windows(tekst): ==================================

Page 20: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 20

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

852 ZAPIS U BAZI PODATAKA - U SLOGOVIMA DBF FAJLA - NAPRAVLJEN CE FONTOM 1250, PREVODI SE OVOM FUNKCIJOM U CE FONT 1250 - KAKO BI MOGAO DA SE STAMPA U FAJL ILI PRINTER SA ISPRAVNIM YU ZNACIMA. TABELA TRANSLACIJE (podesi Windows na Serbian (Latin) kodnu stranu 1250 CE karakter set da bi se videli YU znaci i EDITOR na DOS OEM character set XBASE 852 ZAPIS WINDOWS 1250 ============================== Ź A7 177 8E 132 (Z)zaba ! D1 206 D0 208 (Dj)oka Ć E7 2ć0 8A 1ć8 (S)mirgla ¬ 8F 13ć C7 168 (C)urka Ń AC 142 C8 200 (C)ackalica † A4 174 6E 158 isto, samo mala slova × D0 208 F0 230 ¦ E4 2ć1 6A 153 ź 87 1ć3 E7 2ć0 ç 6F 156 E8 2ć2 =============================== */ #include "Appevent.ch" #include "Common.ch" #include "Font.ch" #include "Gra.ch" #include "Xbp.ch" **************************************************************** FUNCTION YU_SLOVA() // PREVODJENJE KONKRETNOG DBF FAJLA IZ (OEM YUSKY 852) --q (OEM 852) ZAPIS **************************************************************** LOCAL stari_naziv, novi_naziv MsgBox("START","YU SLOVA") USE TEST.DBF NEW EXCLUSIVE GO TOP DO WHILE .NOT. EOF() // FIELDS NAZIV je polje koje sadrzi string stari_naziv := ALLTRIM(NAZIV) // stari_naziv = (YU SKY 852) ZAPIS novi_naziv := YU_alaska_u_windows(stari_naziv) // novi_naziv = (YU CE 1250) ZAPIS REPLACE NAZIV WITH novi_naziv // MsgBox(stari_naziv+chr(1ć)+novi_naziv,"tekst") SKIP ENDDO USE MsgBox("KRAJ","YU SLOVA") RETURN(0) **************************************************************** FUNCTION YU_alaska_u_windows(tekst) **************************************************************** // Kad je u Windows ucitan YU SKY FONT sa YU znakovima // i kada se taj font koristi od strane Xbase++ aplikacije // na ekranu se dobija prikaz YU znakova, a u DBF fajl se // isti YU znaci zapisuju kao 852 kod. // Prepis tih 852 znakova iz DBF fajla u TXT fajl daje YU // znake, samo kada je ukljucen YU SKY FONT u windowsu, // ali kad tog fonta nema, odnosno kada je ukljucena kodna // strana 1250, tada se na ovaj nacin ne dobijaju YU znaci. // Zbog toga se vrsi prevodjenje YU SKY 852 znakova u // YU CE 852 znakove (zapis u DBF dobijen iz fonta 1250) // koji se kod ukljucene kodne strane 1250 prevode u // ispravne YU znake.

Page 21: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 21

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

**************************************************************** // Transformisanje teksta upisanog u DBF preko YU znakova // (JUS raspored) u tekst koji se dobija upisivanjem u DBF // preko MS YU znakova (Microsoft Central Europen) LOCAL prevod_teksta, nDuzina, flag, cZnak * tekst // "interni" Xbase++ znakovi upisani // u DBF fajl sa YU JUS fontom --q prevod_teksta := "" // --q "interni" Xbase++ znakovi upisani // u DBF fajl sa 1250 fontom nDuzina := LEN(ALLTRIM(tekst)) FOR i = 1 TO nDuzina flag := 0 cZnak := "" cZnak := SUBSTR(tekst,i,1) IF ASC(cZnak) = 73 .AND. flag = 0 // (&) (Z)aba cZnak := CHR(177) flag := 1 ENDIF IF ASC(cZnak) = 62 .AND. flag = 0 // ([) (Dj)oka cZnak := CHR(206) flag := 1 ENDIF IF ASC(cZnak) = 61 .AND. flag = 0 // (§) (S)ampon cZnak = CHR(2ć0) flag := 1 ENDIF IF ASC(cZnak) = 6ć .AND. flag = 0 // (\) (C)urka cZnak := CHR(13ć) flag := 1 ENDIF IF ASC(cZnak) = 63 .AND. flag = 0 // (@) (C)ackalica cZnak := CHR(142) flag := 1 ENDIF // mala slova IF ASC(cZnak) = 67 .AND. flag = 0 // (^) (z)aba cZnak := CHR(174) flag := 1 ENDIF IF ASC(cZnak) = 123 .AND. flag = 0 // ({) (dj)oka cZnak := CHR(208) flag := 1 ENDIF IF ASC(cZnak) = 12ć .AND. flag = 0 // (Q) (s)ampon cZnak := CHR(2ć1) flag := 1 ENDIF IF ASC(cZnak) = 125 .AND. flag = 0 // (|) (c)urka cZnak := CHR(1ć3) flag := 1 ENDIF IF ASC(cZnak) = 127 .AND. flag = 0 // (`) (c)ackalica cZnak := CHR(156) flag := 1 ENDIF prevod_teksta := prevod_teksta + cZnak NEXT i // MsgBox(tekst+chr(1ć)+prevod_teksta,"tekst")

Page 22: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 22

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

RETURN(prevod_teksta) // SLEDEČA FUNKCIJA SE KORISTI SAMO AKO NIJE AKTIVIRANA KOMANDA: // // SET CHARSET TO ANSI // // KADA SE AKTIVIRA OVA KOMANDA, SVE ISPRAVNO RADI– // POGLEDATI TEST PROGRAM: // "RAD SA ANSI KARAKTER SETOM U GUI APLIKACIJAMA U WINDOWS OKRUZENJU" // i funkciju TEST_ANSI_OEM() **************************************************************** FUNCTION alaska_u_windows(tekst) **************************************************************** // WINDOWS setovan na kodnu strana MS 1250 YU latinica // ili na MS 1251 YU cirilca: // 1. Kad je Windows podesen na kodnu stranu 1250 tada se // u Xbase++ aplikaciji, bez zadavanja fonta ili sa "10.Helv" // (default Xbase++ font), aktiviraju YU znakovi, // ali samo na EKRANU u SAY i GET objektima a ne i u stampi. // // 2. U DBF se upisuju OEM charset 852 YU znakovi, koji kod // kasnijeg prepisa iz DBF u WINDOWS txt fajl ili na printer, // ne prikazuju YU znakove, pa se pre upisa u printer ili // TXT fajl, moraju ovom funkcijom prevesti u 1250 YU znakove. // KAKO PREVAZIČI PROBLEM SA ŔTAMPOM (Microsoft Central Europen) // CE YU ZNAKOVA U ALASKA Xbase++ // // 1. PODESI WINDOWS tastaturu na kodni raspored serbian latin // 2. podesi WINDOWS na serbian latin default regional settings // // ć. KORISTITI SAMO ALASKINE DEFAULT FONTOVE: // HELV, COURIER, TIMES, da bi ekranski prikaz // YU znakova bio ispravan. // Alaska Će za YU znake u DBF upisati 852 kodove koji nisu // kompatibilni sa 1250 WINDOWS CE kodovima. // Ova funkcija se koristi da bi se 852 kod, iz DBF fajla, // preveo u 1250 kod YU znakova, kako bi WINDOWS mogao da // prikaze ove znakove u tekst fajlu: †×¦źçŹ!Ć¬Ń // // Autori: BlagojeviĆ Dragan i StanojeviĆ Slobodan 14-02-2007 LOCAL prevod_teksta, nDuzina, flag, cZnak * tekst // YU 852 Xbase++ znakovi upisani u DBF fajl --q prevod_teksta := "" // --q YU 1250 znakovi - Microsoft Central Europen nDuzina := LEN(ALLTRIM(tekst)) FOR i = 1 TO nDuzina flag := 0 cZnak := SUBSTR(tekst,i,1) IF ASC(cZnak) = 177 .AND. flag = 0 // ({) (Z)aba cZnak := CHR(132) flag := 1 ENDIF IF ASC(cZnak) = 206 .AND. flag = 0 // (|) (Dj)oka cZnak := CHR(208) flag := 1 ENDIF IF ASC(cZnak) = 2ć0 .AND. flag = 0 // (Q) (S)ampon cZnak = CHR(1ć8) flag := 1 ENDIF IF ASC(cZnak) = 13ć .AND. flag = 0 // (") (C)urka cZnak := CHR(168) flag := 1 ENDIF IF ASC(cZnak) = 142 .AND. flag = 0 // (:) (C)ackalica cZnak := CHR(200) flag := 1

Page 23: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 23

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

ENDIF // mala slova IF ASC(cZnak) = 174 .AND. flag = 0 // ([) (z)aba cZnak := CHR(158) flag := 1 ENDIF IF ASC(cZnak) = 208 .AND. flag = 0 // (\) (dj)oka cZnak := CHR(230) flag := 1 ENDIF IF ASC(cZnak) = 2ć1 .AND. flag = 0 // (§) (s)ampon cZnak := CHR(153) flag := 1 ENDIF IF ASC(cZnak) = 1ć3 .AND. flag = 0 // (]) (c)urka cZnak := CHR(2ć0) flag := 1 ENDIF IF ASC(cZnak) = 156 .AND. flag = 0 // (–) (c)ackalica cZnak := CHR(2ć2) flag := 1 ENDIF prevod_teksta := prevod_teksta + cZnak NEXT i RETURN(prevod_teksta) /* ================================================================= RAD SA ANSI KARAKTER SETOM U GUI APLIKACIJAMA U WINDOWS OKRUZENJU ================================================================= Komanda: SET CHARSET TO ANSI mora biti aktivirana na startu aplikacije 1. KARAKTER SET tekstualnih polja u DBF fajlu je iskljucivo OEM 2. Naredba SET CHARSET TO ANSI - omogucava da tekstualna polja u DBF fajlu i ako su u OEM karakter setu, budu prebacena u windows GUI mod (u windowsu je to uvek ANSI karakter set) kao ANSI i prikazu YU znake. ć. Ispis u izvornom kodu na kontrolama interfejsa je ispravan samo ukoliko se koristi editor u ANSI modu 3. Da bi sve ovo radilo, tatstatura treba da bude Serbian (Latin.) 5. Proveriti: Da li je potrebno da u regionalnim podesavanjima bude izabran Regional Options - Serbian (Latin) Advanced - Serbian (Latin) */ **************************************************************** FUNCTION TEST_ANSI_OEM() **************************************************************** LOCAL aStructure, ANSI_TXT IF FILE("TEST.DBF")=.F. aStructure := Q Q ]OEM_TXT],]C],20,0|, Q ]NAZIV],]C],20,0| | DbCreate( "TEST", aStructure, "DBFNTX" ) // KREIRAJ TEST DBF FAJL ENDIF USE TEST NEW EXCLUSIVE IF RECCOUNT()= 0 APPEND BLANK ENDIF ANSI_TXT := OEM_TXT // UCITAJ IZ DBF FAJLA IZ POLJA OEM_TXT TEKST STRING USE

Page 24: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 24

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

ANSI_TXT := UPIS0(ANSI_TXT,"ANSI UPIS") // IZMENI TAJ TEKST STRING UPISOM U GET // YU KARAKTERA IZ ANSI KARAKTER SETA IF EMPTY(ANSI_TXT) RETURN(0) ENDIF USE TEST NEW EXCLUSIVE GO TOP // ANSI tekst se upisuje u DBF kao OEM tekst: REPLACE OEM_TXT WITH ANSI_TXT // UPISI U DBF FAJL U POLJE OEM_TXT TEKST, USE // YU ZNAKE, NAPISAN ANSI KARAKTER SETOM // Pregledom sadrzaja DBF fajla iz HEX editora // vidi se da je u DBF polje upisan OEM tekst. USE TEST // OEM citanje iz DBF i auto prevodjenje u ANSI: MsgBox(OEM_TXT,"ANSI prikaz") // Procitaj sadrzaj polja iz DBF fajla i USE // Prikazi ga u ALASKA Xbase aplikaciji // Bice ispravno ispisan ANSI tekst sa svim // YU znakovima. // OEM citanje iz DBF i auto prevodjenje u ANSI: SET CONSOLE OFF // Procitaj sadrzaj polja iz DBF fajla i SET PRINTER TO T.TXT // STAMPAJ ga u ALASKA Xbase aplikaciji u TXT SET PRINT ON // fajl, ili direktno na printer (na papir) USE TEST ~ OEM_TXT // stampanje ANSI teksta i ispravnih YU znakova USE SET PRINTER TO SET PRINT OFF SET CONSOLE ON // U NOTEPAD-u, ; := RunShell("T.TXT","NOTEPAD.EXE") // Bice ispravno ispisan ANSI tekst sa svim // YU znakovima. RETURN(0)

Page 25: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 25

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

PRILOG 5

INSTALACIJA I PODEŠAVANJE ADVANTAGE DATABASE SERVERA ADS/ALS

ADS server se prilikom instalacije podešava na ANSI i OEM karakter set

Slika 1

Slika 2

Page 26: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 26

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

WARNING To prevent data corruption, be sure to use the same character set on all

Advantage servis including Advantage Local Server

UPOZORENJE Da biste sprečili oštećenja podataka, morate da koristite isti character set

postavljen na svim Advantage servisima, uključujući Advantage lokal server

Please note that choosing <DEFAULT ON MACHINE> uses the installation workstation’s

character set. If version af Advantage with different character sets share the same file,

data coruption can occur.

Imajte na umu da odabrani <DEFAULT ON MACHINE> karekter set moraju da koriste i

instalacije na radnim stanicama. Ako na serveru i radnim stanicama postoje različiti

karakter setovi i različite verzije tih setova doći će do oštećenja podataka.

Ako u jednom računaru ADS ima podešen jedan karakter set pa se podaci iz tog

računara prenesu u drugi računar gde ADS server ima podešen drugi karakter set doći

će do oštećenja podataka.

Selecting a specific ANSI language for all Advantage installs (including Local Server) will

guarantee the ANSI character set s used by all Advantage applications will be the same.

Odabir specifičnog ANSI jezika za sve Advantage instalacije (uključujući i Local Server)

garantuje da će isti ANSI karakter set upotrebljavati sve Advantage aplikacije.

This setting does not apply to tables opened with OEM as the specified character set

type, or to „Advantage“ DOS applications.

Ova postavka se ne primjenjuje na DBF tabele otvorene s OEM kao tipom karakter seta,

ili kod Advantage DOS aplikacija.

Page 27: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 27

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

Slika 3

Slika 104

Page 28: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 28

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

The following only applies if your Advantage applications use OEM/Localized character

sets. Please select Next if your Advantage applications use ANSI character set only.

Ovo se primjenjuje samo ako vaše Advantage aplikacije koriste OEM /

Lokalizovani karakter set. Molimo odaberite |Next| ako vaše Advantage

aplikacije koriste samo ANSI karakter set.

The Advantage Database Server suports the following OEM Localized character sets.

Please select the set that matches your Advantage client applications.

Server baze podataka Advantage podržava sledeće OEM Lokalizovane karakter setove.

Molimo odaberite karakter set koji odgovara vašim Advantage klijent aplikacijama.

Installing the Advantage Database Server Service for Windows

Note You must have administrative privileges to install the Advantage Database Server

1. Proceed through the introductory windows that appear on the screen.

2.

Once the Advantage Database Server files have been copied, the Product Information window prompts you to enter the Advantage Database Server serial number, validation code or authorization code, and the optional replication code. Reference the Advantage Database Server Serial Number ID Card included with the product to find your serial number, validation code or authorization code, and the optional replication code.

3.

Enter the name of the registered owner of the Advantage Database Server. Radio buttons exist to choose the Advantage Database Server Service Startup option. If you are unsure of which startup option to choose, the default Automatic is recommended.

4.

To properly perform string comparisons with local languages, Advantage provides OEM/localized character sets to match your country's language requirements. If your Advantage application uses OEM/localized character sets, select the character set that matches your Advantage client applications. Selecting a specific OEM/Localized character set for all Advantage installs (including Advantage Local Server) will guarantee the OEM/Localized character sets used by all Advantage applications will be the same. If your Advantage applications use ANSI character sets only, select Next.

5.

To properly perform string comparisons when using ANSI collation, Advantage provides ANSI character sets to match your country's language requirements. If your Advantage application uses ANSI character sets, select an ANSI character set to be used on the Advantage Database Server. If <CURRENT SYSTEM LANGUAGE> is chosen, the currently configured ANSI character set will be used. If you do not wish to use the ANSI character set that is currently active, this setting can be used to select a specific character set. Selecting a specific ANSI language for all Advantage installs (including Advantage Local Server), rather than selecting <CURRENT SYSTEM LANGUAGE>, will guarantee the ANSI character sets used by all Advantage applications will be the same. It is recommended that <CURRENT SYSTEM LANGUAGE> not be chosen unless this is the only Advantage Database Server installation.

Page 29: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 29

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

Redistributing the Advantage Local Server

The Advantage Client Engine DLL (ACE32.DLL), which contains the core Advantage

Windows client functionality, must also be distributed with your application in order to

access the Advantage Local Server. All DLLs and supporting files must be installed into

the application directory, the Windows directory, the Windows System directory, or the

client's path. The recommended location is in the application directory. Storing the file

in the application directory helps to avoid version conflicts in the case of multiple

Advantage applications on a single workstation.

The Advantage Local Server consists of a DLL (ADSLOC32.DLL), and three optionally distributed files:

ADSLOC32.DLL – The Advantage Local Server DLL. Contains the core local server functionality.

ADSLOCAL.CFG – The Advantage Local Server configuration file. This file is only necessary if you wish to use local server settings other than the defaults.

EXTEND.CHR - This file is needed for non-USA OEM language support with the Advantage Local Server. This file is only necessary if using a non-USA OEM character set with the Advantage Local Server.

ANSI.CHR - This file can be used for ANSI language support with the Advantage Local Server. This file is only necessary if using a specific ANSI character set with the Advantage Local Server.

Page 30: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 30

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

PRILOG 6

WINDOWS GUI PRIKAZ ANSI YU FONTOVA IZ Xbase++ I DRUGIH APLIKACIJA

Windows je setovan na Serbian (latin) Xbase++ Aplikacija je setovana na ANSI slova:

SET CHARSET TO ANSI. Sledeća YU slova sa tastature:

Slika 1

koristim za upis podatka u polje za unos podatka i dobijem varijablu ime:

slika 2

Ako iz Xbase++ aplikacije odštampam varijablu ime u TXT fajl i pregledam TXT fajl iz

NOTEPAD.EXE piše:

Slika 3

Ako iz aplikacije odštampam varijablu ime na ekran u dijalog box kao poruku ili je

ispišem na komandno dugme ili je ispišem na drugi objekat, piše:

Slika 4

Kad ovu varijablu ime pošaljem u DBF (snimim u polje sloga DBF fajla) pa otvorim DBF

fajl i pogledam sadržaj tog polja iz externih DBF alata (DBF preglednici, DBF Viewer,

DBF manager i sl.) tamo su ova slova zamenjena sa znacima:

slika 5

Što je najgore, kada sad iz Xbase++ aplikacije pregledam DBF iz objekta GUI BROWSER-a

(iz GRID tabele), u polju browsera je prikazano nešto drugo, odnosno ono što je dato na

slici 6:

Page 31: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 31

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

slika 6

Znakovi sa slike 6 predstavljaju znakove sa slike 5 odnosno sa slike 1

a kada iz Xbase++ aplikacije učitam sadržaj polja iz DBF u varijablu ime i štampam ili

prikažem varijablu ime, dobijem korektan tekst:

Page 32: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 32

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

PRILOG 7

Cannot Store Graphic Characters in OEM Mode with XBase++

Problem Description: Graphic characters cannot be store in OEM mode with XBase++. All data exchanged between the Advantage Database Server and an Xbase++ program go through the Advantage Client Engine (ACE): ADSDBE <-> Advantage Client Engine <-> Advantage Database Server The Advantage Client Engine handles character strings only according to the ANSI specification because it is developed to support Windows 32bit GUI applications. Such applications always use the ANSI character set for character strings. Therefore, the 32bit-ACE does not provide the same funtionality as the 16-bit client for DOS (used by Clipper) which handles only OEM encoded strings. This means that the Alaska ADSDBE has to convert all data to ANSI before passing it to ACE. The ANSI codepage contains more national characters while the OEM codepage contains also graphic characters. However, both codepages are limited to hold 256 characters. The ANSI<->OEM conversion table contains "best match" characters for those which are unknown within the other table. Converting a "best matched" character back to the original codepage may result in a completely different character. The following example program demonstrates this implicit conversion problem. It displays all characters whose ANSI<->OEM conversion is not reversible: PROC Main() LOCAL x FOR x := 1 TO 255 IF convToOemCP( convToAnsiCP( CHR( x))) >= CHR( x) ~ x, " " ~~ CHR( x), " " ~~ convToAnsiCP( CHR( x)), " " ~~ convToOemCP( convToAnsiCP( CHR( x))), " " ~~ ASC( convToOemCP( convToAnsiCP( CHR( x)))), " " ENDIF NEXT RETURN This results in 34 characters which can not be converted from OEM -> ANSI -> OEM without change (or loss) of information. This technical issue has an immediate impact for database applications which use the Descend() function for creating descending indexes. Descend() may return a string containig characters that can only be ANSI<->OEM converted by a "best match".

Solution: There is no known solution or work-around, other than a complete exodus to ANSI. This is a limitation for any development environment with the Advantage Client Engine.

Page 33: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 33

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

PRILOG 8

Character Sets Advantage ODBC Driver

Character Sets are important when using the Advantage ODBC Driver in international environments. They are used to determine what characters are available in the chosen language and are used to properly sort indexes based on the chosen language’s collation sequence. The Advantage Database Server must also be installed with the correct language collation sequence. When installing the Advantage Database Server, the language support is outlined to properly select the character set you wish to use with your applications.

There are key differences between database and index files created with Windows database applications and DOS database applications. This is due to the underlying character sets defined in Windows and DOS. The character set definitions are not the same in both environments, even with English.

Beginning with version 9.0, the Advantage ODBC driver can make use of additional collation sequences that can be loaded dynamically at run time. See dynamic collations for more information.

ANSI Character Sets

ANSI is the definition of character sets as established by Microsoft Windows. When ANSI is chosen as the character set type, it specifies that the ANSI collation stamped into Advantage Database Server (or specified in the adslocal.cfg file for Advantage Local Server) will be used. Any database and index files created by Windows applications are defined with ANSI character sets. When using the Advantage ODBC Driver, you are most likely accessing the Driver from a Windows environment. To access and properly maintain existing indexes, ANSI must be selected in your Data Source as the Character Set. This then assumes the Windows language setting. All changes made to the database and index files, in addition to building new indexes, assume the ANSI option is selected.

When the Advantage proprietary data type is selected, all sorting uses the ANSI character sets.

OEM Character Sets

DOS applications use an OEM character set definition. For database and index files created with a DOS application, such as CA-Clipper, use the OEM character set to sort and maintain indexes. If OEM is selected as the Character Set, it specifies that the OEM collation stamped into Advantage Database Server (or specified in the adslocal.cfg file for Advantage Local Server) will be used.

If OEM is selected, the Advantage ODBC Driver performs OEM to ANSI conversions. Since the ODBC Driver is used from a Windows environment, it assumes that the Windows settings are set up to use the proper collation sequence. The Windows setup information is sufficient to let OemToAnsi and AnsiToOem functions correctly convert data that is in the database.

Conversions

The Advantage ODBC Driver must work with ANSI data, therefore, the Driver must convert OEM database and index files to ANSI. When converting characters, it is possible that some may not properly convert to an expected character.

Page 34: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 34

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

The Advantage ODBC Driver uses the Windows keyboard driver to figure out the OEM code page. This allows the Driver to use the installed Windows character set to convert the OEM data to ANSI.

For example, the Windows ANSI character ‘È’ (Windows character 200) in codepage 1252 has no equivalent OEM character in codepage 437. This has several consequences:

• If you create a table with ANSI character 200 in the name, DOS automatically will convert it to a plain ‘E’.

• If you create a table with the lower case version ‘è’ (character 232), the same conversion happens.

Data in a character field that has character 200 will get converted to ‘E’ in the AnsiToOem function call made before data is stored in the DBF table. The small character version (232) will convert correctly because code page 437 contains that character.

Field and Path Names

When creating DBF files, the Advantage ODBC Driver creates columns with field names containing only ‘0-9’,’ _’, ‘A-Z’, and ‘a-z’ characters. Thus, international characters cannot be used in a field name. This is necessary for compatibility with the Advantage Expression Engine. If a table already exists with field names using characters other than ‘0-9’, ‘_’, ‘A-Z’, and ‘a-z’, the ODBC Driver can access the fields. The maximum length of a DBF field name is typically 10 characters. However, when using Visual FoxPro (VFP) tables in a data dictionary, the names can be up to 128 characters.

Advantage proprietary files allow any character from character code 1-255 to be in a field name, except for ‘;’ and ‘,’ characters. Field names can be up to 128 bytes in length.

Character sets (and collation orders) used by the Driver are based on the information from the ODBC registry entry for a given Data Source. This means that a table accessed through a full path (e.g., "x:\dbdir\table") is assumed by the Driver to have the same character set as the initial connection. Internally, the table is stored as a different "database" under a single "connection". This also applies to the "USE x:\dbdir" extended grammar SQL statement.

Page 35: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 35

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

PRILOG 9

Advantage ANSI Collation Utility

Advantage Database Server v8.1: A Developer’s Guide

© 2007 Cary Jensen and Loy Anderson. All rights reserved

The Advantage Data Architect ships with the Advantage ANSI Collation Utility, shown in Figure 1-12, a tool that permits you to create custom ANSI collations. The ANSI (American National Standards Institute) character set is a standard mapping of characters to numeric values. These characters include printable characters and special control characters, such as tabs and carriage returns. An ANSI collation sequence defines the order, or precedence, of characters for the purpose of making string comparisons.

Figure 1-12: The Advantage ANSI Collation Utility

To access the Advantage ANSI Collation Utility, run ANSICHR.EXE, which is located in the same directory in which the Advantage Data Architect is located. By default, this directory is c:\Program Files\Extended Systems\Advantage 8.1\ARC.

Few developers will ever need to use the Advantage ANSI Collation Utility. For most applications that use the English language, you will install one of the provided English collation sequences. Similarly, for most non-English applications, Sybase iAnywhere provides localized character sets that ensure proper string comparisons.

For those non–English speaking developers for whom there is no localized character set, the Advantage ANSI Collation Utility is an essential tool for defining character precedence.

Page 36: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 36

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

When installing ADS or ALS, you will choose either a localized character set or an ANSI collation sequence. Which options you have depend on the version of the Advantage Database Server that you are installing. For example, if you are installing the domestic version of ADS, you will be able to select only between an American English collation, a Canadian English collation, and a French Canadian collation.

Regardless of which character set or collation sequence you install, keep one very important issue in mind. The server and each of its client connections must use the same character set or collation sequence. Doing so ensures that the server and its clients agree on how strings are compared.

Because both client and server must use the same character set or ANSI collation sequence, it is particularly important for non-English applications to use the ANSI character set provided by Sybase iAnywhere, instead of choosing "default on machine." This is especially important for Advantage Local Server users. Each version of Windows (95, 98, NT, 2000, XP, and so on) has different "default on machine" ANSI collation sequences, even when the same language is configured. Consequently, if one ALS client is using Windows 98 and another is using Windows 2000, collation mismatch errors will result.

CAUTION: If you change the character set or collation sequence being used by your clients and server, you must rebuild all indexes before you access any of your tables.

Page 37: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 37

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

PRILOG 10

Kodna strana 1250 YU FONTOVI MySQL, InterBase, IBObjects, FIBplus, Dbexpress, Delphi, DB2, JAVA, svuda ima velikih problema

KORISNI LINKOVI:

http://titlyu.sourceforge.net/index.html

http://www.praktikum.rs/office/download/default.asp

Pozdrav,

interesuje me kako podesiti winXP da podržava sistemske fontove cp1250?

Npr. aplikacija rađena u Visual FoxPro 6.0 regularno radi na win98 dok na winXP i

win2k ima problema sa našim slovima. Win98 sam podesio pomoću nekog Serbian

PatchMe programa, koji sam našao na priloženom linku:

http://user.sezampro.yu/~bojans/spatch.htm

Taj programčić je za win98/win98se/winme i radi odlično, ali meni treba tako nešto za

winXP i win2k. Može li mi neko pomoći?

Delimično se problem može rešiti samo kod winXP instalacijom service pack 1/2 i

Serbian Language Interface (LIP), mada i onda veliko à i Ž ne prikazuje regularno, dok

su ostala naša slova OK, ali mi je malo čudan Win na srpskom, pošto radim već godinma,

pa mi više smeta nego što mi pomaže, tj. nabolje bi bilo da se naša slova reše bez

prevoda celog Windowsa na srpski. A za win2k nemam čak ni delimično rešenje.

Jedan od jačih razloga prelaska na w2000 i wxp za nas bi svakako bio i unikod podrška

na nivou operativnog sistema (koja ipak i dalje nije savršena) i poprilično elegantno

rešenje ćirilica-latinica srpskog jezika. Problem je šta sa sakatim kodnim stranicama i

ostalim verzijama "ćirilice" i "srpske latinice" koje u stvari predstavljaju brljotine

originalne engleske postavke tastera, a korišćene su silom prilika i silom navika od

prvobitnih windowsa pa čak i danas u wxp-u. Ponudiću ti rešenje kako podesiti rad sa

podrškom za srpski jezik u oba pisma, ali i dalje imaš problem sa dokumentima i

programima koji su razvijani ili izrađivani u code-page 1250 ili ko zna kojoj još goroj. U

dokumentima jedini način je izrada i upotreba podprograma (makroa) za prebacivanje

sa jedne na drugu kodnu stranicu, a kod programa koji su pisani sa podrškom za

problematičnu kodnu stranicu - pomaže samo ponovno pisanje (menjanje

podrazumevanih postavki jezika, tastature...). Podešavanja za jezik, inače, nisu

uslovljena instalacijom LiP-a za naš jezik, tj. moguća su i bez toga, ali je nekako

razumnije da je to dobitna kombinacija... Rešenje: kontrolna tabla - Regionalne i jezičke

opcije - Jezici, tu dodaj - instaliraj podršku za kodne rasporede (pored engleske) za

srpsku latinicu i ćirilicu i odredi podrazumevanu za sistem, zatim pod karticom Više

opcija, izaberi srpski (latinicu) kao jezik za ne Unikod programe... instaliraj kodne

stranice koje ti nedostaju pri podrazumevanom instaliranju sistema a zatim na donjoj

kućici čekiraj opciju da se takvo podešavanje proširi na sve naloge i korisnički profil. Za

Page 38: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 38

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

makroe koji menjaju kodne rasporede u već izrađenim dokumentima, poseti sajt za MS

Office na srpskom (praktikum, valjda co.yu) ili ga načini sam, prosto je kao pasulj..

Kodna strana 1250 i MySQL

Da li postoji neki način da iskonvertujem MySQL bazu iz Win1250 kodne strane u

UTF8.

Mozes iz php da uzmes ceo sadržaj i promeniš sve karaktere pre prikaza

ob_start()–

// ovde ide tvoj kod

...

// kraj koda

?contents = ob_get_contents ()

ob_end_clean()–

?trans = array(

"Ŕ" =q "}#1ć8–",

"Ž" =q "}#132–",

"š" =q "}#153–",

"ž" =q "}#158–",

"$" =q "}#272–",

"Æ" =q "}#27ć–",

"æ" =q "}#278–",

"È" =q "}#276–",

"è" =q "}#242–",

"Ð" =q "}#24ć–"

)–

?output = strtr (?contents, ?trans)–

echo ?output–

ovo ne može bez output buffering (procitaj ob_* funkcije iz manuala)

MySQL

E ovako ... Interesuje me je'l ima neko iskustva sa mySQL bazom i našim karakter

setovima, odnosno win1250 ili croat.. Kad dignem bazu koristim parametar default-

character-set i baza se uredno digne sa character-set = win1250 međutim kad radim

neke funkcije koje se tiču toga, (UPPER, sort) uopšte ne reaguje već koristi default

podešavanja odnosno latin1 raspored.

pomoc....

P.S. Sve je na windows platformi

ODGOVOR

Prvo baci windows down the toilet i koristi neki *nix. Drugo, koristi iso-8859-2 a ne

win1250. Treće sve što ide uz MySQL od onoga što liči da bi moglo da podržava naša

slova ima uvek neki problem, najčešće sa samo jednim slogom. Pogledaj šta sam tamo

napisao u rubrici MySql, pogledaj i MySql dokumentaciju. Najbolje je da sve radiš na

Page 39: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 39

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

novim tabelama, ako radiš sa starim mogu da se zeznu indeksi pa možda budeš morao

da pokrećeš myisamcheck ili šta već. uff...

InterBase

Zdravo svima, interesuje me, ako je ukljuceno ono Sr (Serbian) u systray-u, koji charset

treba da definišem kao default za jednu InterBase bazu podataka koju

planiram da napravim? Pretpostavljam da je Latin-2, ali ne znam koja je

tačna oznaka. I hoće li se sigurno ta slova videti kada budem pregledao

rezultate upita bazi? Hvala.

DOS852. Ako staviš win1250, ili unicode, sve radi OK u IB Consoleu, ali kada se iz

Delphija okačiš na bazu javlja "Invalid Code Page".

U praksi najčešće upotrebljavam UNICODE_FSS, a kao komponente u Delphi-ju Zeos

Database Components, i do sada nisam imao problema. Verzije koje koristim su IB 6.0 i

Firebird (preporuka) 1.0.0.679 (Final).

Sada mi se isprečio sledeći problem. Koristim IBUpdateSQL u Delphi-ju i kad popunim

InsertSQL nekim stringom iz EditBox-a (u koje je pri uključenim našim slovima, tj. Sr je

pisalo u onom kvadratiću u sys tray-u, upisan neki string opet s našim slovima) i

pokušam da izvršim IBUpdateSQL.ExecSQL(TUpdateKind(ukInsert)) prijavi mi grešku,

kaže ne može da izvrši konverziju charset-a. Kako ste vi to rešili??? Inače momci, ovo sa

charsetima u samoj bazi super radi, a i moj program to lepo čita. Hvala na pomoći. Pozdr.

Ufff... te kodne strane prave žešće gluposti. Meni se isto to danas desilo, jer do sada

nisam ništa interaktivno unosio u bazu, već je sve upisivano konverzijom iz csv fajla.

Elem: Stavi kodnu stranu na default (tj. nemoj uopšte ni da je stavljaš) i onda radi OK.

Meni je jedino tako uspelo.

dbExpress

Iskreno, batali IBX, pređi ili na Zeos, ili na IBObjects ili na FIBPlus, mislim da ćeš time

rešiti gomilu potencijalnih problema.

FIBPlus: www.devrace.com IBObjects: www.ibobjects.com za Zeos mislim da je

www.zeosdbo.com, ali najbolje bi bilo da potržiš na Google-u Zeos Database Objects.

ali ako trebaš se igrati sa aplikacijom koja učitava vise dll-a iz kojih trebaš da učitavas sa

IB, zeos jednostavno neće dobićeš kulturan AV. Zeos je PUN bagova !!!

probaj:

http://sourceforge.net/projects/open-dbexpress/

http://sourceforge.net/projects/dbexpressplus/

dbExpress je strava

Izvinjavam se poštovanom auditorijumu, ali nađoh nešto što bi moglo da bude rešenje

problema. Ukoliko neko bude probao, molim da javi na forum.

Evo teksta:

First make sure that a database is created with a win1251 code page. Then write a string

Page 40: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 40

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

isc_dpb_lc_ctype = WIN1251 in the DBParams property of an instance of the

TIBDatabase object.

DB2

Radim sa bazom podataka DB2 na IMB AS400 serveru. Drajver za konekciju ADO.NET-a i DB2 baze podataka je DataDirect for .Net. Sve dobro radi osim kada treba da se prikazu podaci izvuceni iz baze na formu. Ne vide se nasa slova. Kodna strana AS400 masine je IBM037, a moja Windows-ova 1250. Moje pitanje svima vama koji se razumete u ovo: Kako da uradim konverziju i prikazem nasa slova bez greske. Kod koji koristim za konekciju sa bazom string Connection string is: "Host=10.1.1.11 – Port=337 – User ID=userID – Password=pass – Database=SććG200ć – Collection=DB– Charset For 755ć5=IBM0ć4" DataTable myDataTable DB2Connection myConnection = new DB2Connection(ConnectionString) try Q myConnection.Open()– | catch (DB2Exception es) Q MessageBox.Show("Error " + es.Message)– | DB2Command myCommand = myConnection.CreateCommand()– myCommand.Connection = myConnection– try Q myCommand.CommandText = "SELECT * FROM myTable"– DB2DataReader myDataReader = myCommand.ExecuteReader()– myDataTable.Load(myDataReader)– | catch (DB2Exception ex) Q MessageBox.Show(ex.Message)– | try Q myConnection.Close()– | catch (DB2Exception es) Q MessageBox.Show(es.Message)– |

Hvala icon Re: Konverzija kodne strane - Zanima me jeste li nasli rjesenje za ovaj problem? Ne! Ali sam shvatio u cemu je problem. Ovo je nemoguce resiti sa ovim drajverom. Postoje neka druga resenja koja mogu da rese ovaj problem, ali naravno da i kostaju. Npr resenje firme Symtrax (www.symtrax.com). Oni imaju svoj drajver. Ustvari to nije klasican drajver. Sastoji se iz dva dela: deo koji se instalira na serveru i deo koji se instalira na klijentu. Na serveru se podesi kodna strana servera (u mom slucaju IBM EBCDIC 37), na klijentu podesis klijentsku kodnu stranu. Prilikom transfera podataka drajver sam odradi posao konverzije. Ovo je u teoriji, a u praksi ne znam, nisam probao jer u firmi ne dozvoljavaju da instaliram aplikacije na serveru, kazu opasno je. Jos jedno od slicnih resenja: www.easycom-aura.com. Skinuo sam desetine klasicnih drajvera. Nijedan nije mogao da zavrsi posao kako treba. Ako imate Vi neko resenje - Please Help!

MySQL

Nije mi jasno, svuda radi i lepo prikazuje naša slova a sada na ovom sajtu što radim neće!

Ja lepo zapišem u MySQL bazu podatak, dobijem ono "ae" umesto ć, i kada to prikažam

Page 41: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 41

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

na ekranu ostane "ae" iako imam charset definisan. Kada otvorim kod HTML-a u

EmEditor-u on prepozna kodnu stranu i lepo prikazuje ć, ali IE neće!

Code: ð>DOCTYPE HTML PUBLIC "-//WćC//DTD HTML 3.0 Transitional//EN"q

ðhtmlqðheadq

ðmeta http-e;uiv="Content-Type" content="text/html– charset=iso-

8856-2"q

Gde sam pogrešio? Ovo mi stvarno ide na živce... jednostavno nemam pojma u čemu je

stvar... Sve sam rešio sa .htaccessom ... huh, kako problem može da bude na skroz

drugom mestu... a primer je na http://www.devbase.net/test/

JAVA

Dakle, imam jedan veliki problem, i pokušavam da ga rešim već dugo ali nikako ne ide.

Radim program koji, između ostalog, čita HTML stranice sa Interneta. Za čitanje koristim

običan InputStreamReader. Kada naiđem na stranicu sa charset-om npr. ISO-8859-1, pre

svakog pročitanog karaktera koji nije iz standardnog ASCII-ja (npr. slova Š, Č, Ć i sl.) mi

se pojavljuje neki čudan karakter, slovo A sa nekom kukom/kvakom gore. Ovaj karakter

se pojavljuje kada se stranica snimi. Zasigurno znam da metod koji čita stranicu NE

dodaje nikakve karaktere kojih nije bilo. Probao sam da konstruktoru

InputStreamReader-a prosledim ime charset-a koji stranica koristi, međutim mrka kapa.

Da li neko ima ideju šta bi ovo moglo biti?

Zeznuto je to malo. Ne znam tačan odgovor ali probaj da pročitaš poglavlje The Java I/O

System knjige Thinking in Java. Bavi se i time pa ti možda razjasni neke stvari.

Da, u pravu ste, napisao sam ISO-8859-1 umesto ISO-8859-2 ali to sada i nije tako bitno

pošto sam rešio problem. Fora je da se kod Jave svi karakteri posmatraju kao Unicode, a

svi ostali charset-ovi se moraju konvertovati. E sada, ja umesto da sam odmah pogledao

u Java tutorial sa java.sun.com ne bih ovde ni postavljao temu ali ajde... Fora je napraviti

InputStreamReader sa željenim charset-om (konstruktor ide nešto ovako

InputStreamReader(InputStream in, String charset_name) ), raditi sa karakterima šta

vam volja, i onda, kada treba rezultate zapisati u fajl, napraviti OutputStreamWriter

sa istim charset-om (OutputStreamWriter(OutputStream out, String charset_name) i

problem rešen.

JAVA

Kako, o kako da postignem da mi se u naslovnoj liniji pojavi charset koji ja hoću, bez

direktnog preuzimanja ispisivanja teksta na titlebaru? Postoji li neki jednostavniji način,

jer u ovom slučaju mora da se pazi na širinu teksta da ne bi došlo do ispisivanja iza

sistemskih dugmića, a opet, kako uopšte mogu da skapiram koji se font koristi od strane

sistema u titlebaru (tako nešto se ne saznaje preko GetSystemMetrics)? Pozdrav.

Evo koda kako da dobijes TFont koji se koristi za naslov forme:

Code: function GetCaptionFont: TFont–

var ncMetrics: TNonClientMetrics–

Page 42: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 42

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

begin

ncMetrics.cbSize := sizeof(TNonClientMetrics)–

SystemParametersInfo(SPI_GETNONCLIENTMETRICS,

sizeof(TNonClientMetrics),

&ncMetrics, 0)–

Result := TFont.Create–

Result.Handle := CreateFontIndirect(ncMetrics.lfCaptionFont)–

end–

Page 43: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 43

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

PRILOG 11

KODNE STRANE – UNICODE – FONTOVI

KODNE STRANE

Prvi računari su pravljeni za englesko govorno područje i imali su podršku samo za engleski alfabet, za brojeve, zagrade i neke kontrolne karaktere što je činilo ukupno 128 mogućih slova, zašto je dovoljno 7 bita. To je bio tzv. ASCII ili US-ASCII standard. ASCII standard je definisao osnovni skup (niz) brojeva potreban za definisanje svih znakova i slova pri korišćenju računara poznat kao kodna strana. Kasnije je ovaj skup proširen na 256 (zašto je bilo potrebno 8 bita). Dodatnih („gornjih”) 128 karaktera je korišćeno za dodatne karaktere. I ovaj prošireni set je zadržao stari naziv ASCII sa prefiksm prošireni, koji se često izostavlja i uzrokuje zabunu. Kako se vremenom računari sve više upotrebljavaju i van engleskog govornog područja, javila se potreba i za korišćenjem drugih jezika. To je dovelo do podrške za više jezika. Podrška za više jezika je omogućena upotrebom tzv. kodnih strana (Code Page) koje definišu gornji prošireni set. Osnovna kodna strana na personalnim računarima (poznata pod šifrom PC437) u tom gornjem setu karaktera definiše razne grafičke karaktere za crtanje tekstualnih prozora i slično. Kasnije razvijene kodne strana u tom setu podržavaju određene jezike. Tako postoje · Latin1 (ISO-8859-1) za latinična pisma Zapadne Evrope (Francuska, Njemačka, Španija,...), · Latin2 (ISO-8859-2) i · Windows-1250 za latinična pisma Istočne Evrope (gdje je smještena i naša latinica), · ISO-8859-5, KOI8-R i · Windows-1251 za ćirilicu... Problem sa kodnim stranama je to što se međusobno isključuju. Cijeli dokument mora da bude napisan istim pismom. Kod ovako definisanih kodnih strana javlja se problem kad je potrebno koristiti dva pisma uporedo (npr. ćirilicu i latinicu). Jedan kodni sistem (jedna kodna strana) ne zadovoljava u potpunosti čak ni engleski jezik (zbog potrebe za većim brojem kontrolnih, interpunkcijskih i opšte tehničkih simbola i specijalnih znakova). Zato se često koriste dvije kodne strane (govori se o međusobnoj koaliciji), gdje dva kodna sistema mogu koristiti isti broj za dva različita znaka ili koristiti različite brojeve za isti znak. U tom slučaju svi računari na kojima se vrši obrada dokumenata (a to se posebno odnosi na servere), treba da podržavaju više kodnih strana (sistema), no svaki put kad se podaci prenose postoji mogućnost da se javi greška. Ako Vam se čini da je na ovaj način teško zadržati konzistentnost, u pravu ste. Tako se došlo do ideje da se napravi jedinstveni zapis za sve jezike - Unicode.

Page 44: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 44

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

Ilustracije koja pokazuju odnos Unicode sistema i ASCII zapisa

Kodne strane Kodna strana omogućava definiciju sadržine (koje slovo iz kog jezika), dok font omogućava definiciju forme (kako izgleda slovo). Gotovo svi operativni sistemi podržavaju Unicode sistem. Da bi praktično mogli da koristimo neki od fontova, on treba da bude kreiran prema Unicode standardu i podržan od operativnog sistema.

YuASCII kodni raspored Fontovi tipa TimesCirilica ili YUTimes Times-C, Times-L i sličnih imena su daleko od standarda. Oni su nastali kao plod rada domaćih hakera, prije nego što se bilo kakav standard isprofilisao. Njihova upotreba se nikako ne preporučuje. Naime, pri prenosu dokumenata sa jednog na drugi računar u elektronskom obliku, postoje velike mogućnosti da taj dokument neće biti čitljiv na drugom računaru. Fontovi ovih naziva su podržavali tzv. YuASCII kodni raspored koji nikad nije zvanično prihvaćen od strane Windows-a, i smatra se gotovo ozloglašenim primjerom lošeg izbora , tako da bi trebalo da se ovakvi nestandardni fontovi izbegavaju. Stroga je preporuka da koristite fontove razvijene prema zvaničnim kodnim tranicama. Glupo je kucati ćirilicu koristeći engleski kodni raspored. Ako želite unositi ćirilicu

Page 45: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 45

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

trebali bi birati Serbian, a u slučaju da koristite latinicu Croatian. Prelazak sa jedne na drugu kodnu stranu što znači i promjenu pisma je krajnje jednostavan .

Page 46: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 46

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

ASCI full

Page 47: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 47

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

ASCI extended

Page 48: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 48

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

CP 852

Page 49: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 49

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

WIN 1250

Page 50: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 50

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

UNICODE

Unicode koristi jedinstven broj za svaki znak, bez obzira na program, bez obzira na jezik. Unicode standard je prihvaćen i podržan od vodećih industrijskih kompanija (proizvođača i softvera i hardvera) kao što su: HP, IBM, JUSTSISTEM, MICROSOFT, ORACLE, SUN, APPLE... Unicode se koristi i kod mnogih modernih standarda kao što su: XML, JAVA, ECMA Script (JavaScript), LDAP, CORBA 3.0, WML, itd. Podržan je od mnogih operativnih sistema, svih savremenih Internet čitača (browser-a) kao i mnogih drugih softverskih paketa i programa. Bazična verzija je dvobajtni format zapisa do 216 = 65536 karaktera. To je dovoljno da se riješi problem zapisa skoro svih postojećih pisama . Ovaj tip Unicode-a se naziva Plain UCS-2 ili UTF-16, jer koristi dva okteta, odnosno dva bajta. No javlja se problem alokacije prostora za Unicode poruku. Ako je riječ o dokumentu na disku, za njega će trebati duplo više prostora nego da je kodovan u standardnom ASCII formatu, jer se svaki karakter koduje sa dva bajta umjesto samo sa jednim. To i nije tako kritično kao kad je riječ o potrebi prenosa podataka preko mreže, jer je za prenos duplo više podataka potrebno duplo više vremena (odnosno novca). Postavlja se pitanje da li je to prevelika cijena za univerzalno pismo i da li je to način da se taj problem prevaziđe. Postoje dva rješenja ovog problema: Prvo da se za zapis koristi dgovarajuća kodna strana (u zavisnosti od toga šta je zapis bira se kodna strana) pa se tako troši samo jedan bajt po karakteru. Ovo rješenje u potpunosti zadovoljava kad se ne koristi više pisama unutar istog zapisa (dokumenta). Drugo rješenje je korišćenje transformacionih šema za pogodniji zapis i prenos podataka korišćenjem Unicode-a. Šeme kodiranja Unicode karaktera su interesantne programerima.. Prvo je razvijena Unicode transformaciona šema sa osnovnom jedinicom od 8 bita (UTF-8). Pomoću nje se karakter zapisuje u jednom, dva ili tri bajta, u zavisnosti od toga o kom je karakteru riječ. Ova šema zadovoljava većinu potreba i na našim prostorima predstavlja apsolutno zadovoljavajući standard. Postoje dvije organizacije koje definišu standarde vezane za Unicode. Jedan format je razvijen od strane tzv. The Unicode Consortium pod nazivom The Unicode Standard . Drugi standard je razvila Međunarodna organizacija za standardizaciju – ISO pod nazivom ISO/IEC 10646 . Oktalni, odnosno decimalni kodovi se koriste za reprezantaciju u nekim programima (npr. kod Html-a, ili programskog source koda da bi se definisao tip promjenljive – da bi se znalo da su to slova).

Page 51: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 51

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

FONTOVI

Fontovi su različiti načini pisanja slova. Pojam fonta se gotovo izjednačava sa pojmom pismo, pa ćemo ga i mi povremeno tako tretirati. Pismo je sredstvo komunikacije. Mogli bi reći da je pismo svaki sistem vidljivih oblika (simbola, znakova, slika i slikarija i njihovih kombinacija) napravljenih u cilju obavještavanja i pamćenja. U užem smislu pismo je sistem znakova koji predstavljaju elemente govornog jezika: pojedine riječi, slogove ili glasove. Razlikujemo nekoliko vrsta pisama: pojmovno, slogovno i slovno (alfabet). Danas se koriste (u različitim jezicima) sve ove vrste pisma, ali mi ćemo pod pismom smatrati alfabet (slovno pismo). Alfabet se nalazi na kraju razvojnog lanca pisma . U zavisnosti od jezika, 26 do 36 znakova su grafemi za pojedine glasove foneme. Slovo ili slovni znak je glavni element pisma. Slaganjem slova nastaju riječi. Pismo čIne svi slovni i ostali znakovi (brojke, znakovi interpunkcije, specijalni simboli itd.), kojima je zajedničko to da su jednoobrazni i da svojim oblikom odgovaraju jedan drugom. U engleskom jeziku za taj pojam se koristi termin "typeface". Pojam fonta je preuzet iz klasične tipografije (bolje rečeno iz Gutenbergove), gdje su se slova otiskivala na papir uz pomoć lijevanih šablona, odakle mu je i naziv (fauntian znači lijevati). Skup znakova koji imaju zajednički grafički oblik naziva se font. Font se često veže za jezik , što je u osnovi pogrešno. Isti font se može koristiti u različitim jezicima. Naime karakteristike koje definišu font mogu se pridružuju različitim znacima, tako da imamo Times New Roman koji se koristi i u engleskom i u njemačkom, ali i u ćirilici i latinici. Postoji set znakova koji je zajednički, dok preostala slova zadržavaju prepoznatljiv grafički oblik., koje karakterišu različiti omjeri uzlaznih i silaznih crta.

Klasifikacija pisama/fontova Ako je niz brojeva definisan kodnom stranom, način kako da računar vidi slovo, onda je font način na koji ga jednostavno prihvata i vidi čovjek. Realizaciji grafičke forme fonta na računaru se može pristupiti na različite načine. Da ne idemo u istorijske reminicsencije, recimo da je to standardno skalabilni (promjenljivi) vektorski način realizacije. Ranije su se koristili i tzv. bitmapirani fontovi. Vektorski ili konturni fontovi, su oni koji se mogu matematičkim funkcijama uvećavati (ili umanjivati) bez gubitka na izgledu slova. Zapisivanje geometrije slovnog znaka ima nekoliko standarda odnosno postupaka, uglavnom se upotrebljavaju dvije metode: jedna spaja obline slova pomoću kružnog luka, a druga koristi tangencijalni Bezier-ov postupak. Fontovi predstavljeni na ovaj način su prvi put razvijeni od Adobe. Adobe koristi Bezier-ov postupak. Standardizacija fontova nije u potpunosti završena i postoji nekoliko standarda za realizaciju konturnih fontova , ali mogli bi reći da su vjerovatna budućnost fontovi realizovani kao OpenType, sadašnjost TrueType fontovi. Ukoliko ste u prilici da birate, birajte fontove realizovane kao TrueType (TTF), ili OpenType Pro, eventualno OpenType (OTF), a o sve ostale koristite sa rezervom.

Page 52: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 52

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

Windows bez problema radi sa TTF fontovima. Od OTF fontova dostupnih na Windows-u, višejezički Unicode sigurno podržavaju: Arial, Times New Roman, Verdana, Courier New i Tahoma fontovi. Ovi fontovi se obično nazivaju sistemski i instalirani su automatski na svim Windows platformama. Za njihovu upotrebu ne treba posebno plaćati. Određeni fontovi neće podržavati sve kodne strane. To je donekle i logično, teško je zamisliti kineski ili hebrejski tekst u Times New Roman stilu. No zato postoje podrška za Santa Fe ćirilicu (Serbian), ili Miroslav latinicu, što nije očekivano. U digitalnom pismu pod pojmom slova se podrazumijeva isključivo pismovna slika (u olovnom slogu taj pojam odnosio na cijeli tzv. olovni stožac ). Rez predstavlja određena stilizacija nekog pisma. To znači da isto pismo može imati različite stilove od kojih su najpoznatiji bold (masna slova) i italic (kosa slova, kurziv). Pismovni rez s obzirom na odnos bijeline i tamnoće se klasificira kao tanki (thin), ultra svjetli, svjetli. (light), normalni, poludebli, debeli (bold), masni (fet) i ultra debeli (black). No postoje i razne druge stilizacije kao npr. thin, ultra thin, condensed, itd. Porodica - familija nekog pisma sastoji se od svih rezova nekog određenog pisma (npr. pismo Futura u svim svojim rezovima čini pismovnu porodicu Futura).

Pregled i klasifikacija prema nekim karakteristikama (optičkim i geometrijskim

karakteristikama) koji sadrže pojedini fontovi

Najčešće se fontovi dijele na serifne (ukrasne sa kvačicama; primjer Times) i sanserifne (bez ukrasa; primjer Ariel) fontove. Postoje još mnoge druge klasifikacije. Tako fontovi mogu biti proporcionalni ili neproporcionalni. Ova osobina odnosi se na širinu slova Kod neproporcionalnih fontova slova su uvek iste širine, dok se kod proporcionalnih širina prirodno menja. Klasifikacija koja su ranije bile strogo propisane i definisane, danas su mnogo fleksibilnije, čak bi se moglo reći da većina korisnika nije ni svjesna postojanja nekih pravila pri korišćenju slova. Upotreba računara je umnogome olakšala i izmjenila kruta pravila koja su važila u tipografiji i grafici.

Page 53: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 53

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

Rasprava o tome kako raditi sa fontovima i kodnim stranama pripada upoznavanju operativnog sistema i programa. Izbor tipova fontova koji je ovdje načet spada u problematiku izdavaštva i tipografije i nije nimalo jednostavan. Kao što se ranije govorilo o slovolivnicama, danas se govori o digitalnim slovolivnicama, gdje su najpoznatije: Adobe, Bitstream, Font Bureau, ITC – International Typeface Corporation, Linotype, Agfa Monotype, Microsoft, ParaType, URW. Ovdje nema govora o teškoj industriji i otrovnim olovnim isparenjima, kreaciju fonta obavlja dizajner na računaru. Možda zbog toga većina korisnika fonovima pristupa olako, ne vodeći računa o autorskim pravima. Korišćenje bilo kog fonta podrazumjeva plaćanje naknade proizvođaču. OpenType format konturnih fontova je zajednički proizvod Adobe i Microsoft-a. Trebao je da objedini dobre osobine nekoliko ranije razvijenih tipova fontova. OpenType format je standard u kome datoteke sa fontovima ne sadrže samo opise slovnih likova i tabele preslikavanja u kodne strane, već i brojne strukture podataka koje omogućavaju bolju tipografiju i prilagođavanje svjetskim jezicima i pismima. Dodatno je stvar zakomplikovao Microsoft kad je svoje višejezičke TrueType fontove sa digitalnim potpisom, deklarisao kao OpenType fontove . Adobe je zadržao kompleksniji set obaveznih osobina koje OpenType font mora da posjeduje, dodao sufiks Pro i tako su nastali OpenType Pro fontovi. Za nas OpenType Pro fontovi imaju poseban značaj, jer su u njih obavezno ugrađena naša latinična slova, a u mnoge važne familije i ćirilica. Ovo ćemo objasniti na primjeru Arial fontova: oni mogu da budu realizovani i kao bitmaparani i kao vektorski: kao font Type1 ili font Type2 ili TrueType ili OpenType ili OpenTypePro. Sve ove realizacije mogu da podržavaju Unicode ili ne. Različiti operativni sistemi i programi sa različitim uspjehom sarađuju sa pojedinim fontovima i sa realizacijama tih fontova.

Tastature i monitorski prikaz fontova

Pri radu sa računarom unos slova se obavlja sa tastature, a njihov prikaz je na ekranu.

Nažalost, još uvijek nije zvanično propisan standard za raspored slova na tastaturi, ali

je u praksi prihvaćen tzv. YuASCII raspored (koji ne trebate mješati sa manje više

zloglasnim fontovima).

Ako ste shvatili šta su fontovi i kako se koduju slova jasan je i razlog i mogućnosti

redefinisanja izgleda slova tasature.

Zaboravimo istorijsko vrijeme kad su na tržištu prvo bile samo engleske, a potom

engleske i njemačke tastature i prihvatimo činjenicu da se danas imamo tastature koja

sadrže domaća slova.

No i dalje se događa da na tastaturi imate označeno jedno slovo, a pritisak na njega na

monitoru je drugo slovo ili znak. Ovo se naročito događa u slučajevima korišćenja

programa koji nisu lokalizovani.

Ispis fontova na štampaču

Ukoliko ste iole pažljivo čitali ovo razmatranje možete zaključiti kako je prikaz slova na ekranu i papiru očekivano različit (zavisi od pravca prostiranja svjetlosti, razlika u medijimu, vrsta papira/ vrsta štampača, preko razlika u paleti boja itd.).

Page 54: Yu Fontovi u Windows Aplikacijama

P r o g r a m i r a n j e u A l a s k a X b a s e + + i e X p r e s s + + P a g e | 54

Programski paket za knjigovodstvo CSYSTEMS™ | FONTOVI

Ukoliko želite da odštampate neki tekst sa Vašeg računara sve je vrlo jednostavno. Odaberete font ukucate tekst i ono što vidite na ekranu, biće odštampano. Problemi nastaju pri prenosu dokumenata sa jedne platforme na drugu. Možda imate problem da shvatite šta se hoće reći, ali to je pojava čuvenih kuka i kvaka pri štampi teksta koji sasvim ispravno izgleda na Vašem računaru. Kuke i kvake se javljaju jer niste usaglasili Vaš računar i sistem na kom štampate. U principu to je posao za profesionalca (riječ je o instalaciji fontova, koje po nomenklaturi poslova obavlja sistem administrator), ali se svodi na to da Vaš računar i računar na kome štampate treba da podržavaju rad sa fontovima koje želite da koristite u Vašem tekstu. Razvijen je poseban PostSkript jezik, specijalizovan za upravljanje štampačem, kojim se definišu fontovi i grafika na štampanoj stranici (u aplikacijama pripreme za štampu), a mogu da se definišu tekst i grafiku koji treba da se prikažu na ekranu.