Опубликовано: 2020-06-15 08:00:00
Векторный шрифт
В этой статье представлена неплохая демонстрация векторного шрифта.
Рассмотрим исходный текст программы:
- DECLARE SUB DRAWTEXT (TEXT AS STRING, X AS INTEGER, Y AS INTEGER, FONTCOLOR AS INTEGER, FONTSIZE AS INTEGER, FONTANGLE AS INTEGER)
- SCREEN 12
- DIM SHARED FONT(223) AS STRING
- DIM I AS INTEGER
- RESTORE FONTDATA
- FOR I = 0 TO 223
- READ FONT(I)
- NEXT I
- 'DEMO
- DRAWTEXT " !" + CHR$(34) + "#$%&'()*+,-./0123456789:;<=>?@", 50, 50, 15, 4, 0
- DRAWTEXT "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`", 50, 100, 14, 4, 0
- DRAWTEXT "ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~√№■", 50, 150, 12, 4, 0
- DRAWTEXT "ABVGDEYEZHZIYKLMNOPRSTUFKHTSCHSHSHCHYEYUYA", 50, 200, 11, 4, 0
- DRAWTEXT "ABVGDEYEZHZIYKLMNOPRSTUFKHTSCHSHSHCHYEYUYA", 50, 250, 10, 4, 0
- DRAWTEXT "1", 50, 400, 13, 1, 0
- DRAWTEXT "2", 60, 400, 13, 2, 0
- DRAWTEXT "3", 75, 400, 13, 3, 0
- DRAWTEXT "4", 95, 400, 13, 4, 0
- DRAWTEXT "5", 120, 400, 13, 5, 0
- DRAWTEXT "6", 150, 400, 13, 6, 0
- DRAWTEXT "7", 185, 400, 13, 7, 0
- DRAWTEXT "8", 225, 400, 13, 8, 0
- DRAWTEXT "9", 260, 400, 13, 9, 0
- DRAWTEXT "10", 310, 400, 13, 10, 0
- DRAWTEXT " VRASHCHENIYE 0", 500, 350, 9, 2, 0
- DRAWTEXT " VRASHCHENIYE 45", 500, 350, 9, 2, 45
- DRAWTEXT " VRASHCHENIYE -45", 500, 350, 9, 2, -45
- DRAWTEXT " VRASHCHENIYE 90", 500, 350, 9, 2, 90
- DRAWTEXT " VRASHCHENIYE -90", 500, 350, 9, 2, -90
- DRAWTEXT " VRASHCHENIYE 135", 500, 350, 9, 2, 135
- DRAWTEXT " VRASHCHENIYE 180", 500, 350, 9, 2, 180
- DRAWTEXT " VRASHCHENIYE -135", 500, 350, 9, 2, -135
- 'PRAVILA POSTROYENIYA SIMVOLOV:
- 'OBSHCHAYA VYSOTA SIMVOLA 9 YEDINITS, SHIRINA MOZHET BYT LYUBOY.
- 'RISOVANIYE VSEGDA NACHINAYETSYA V TOCHKE A I ZAKANCHIVAYETSYA V TOCHKE C
- 'PRI RISOVANII SIMVOLA MOZHNO ISPOLZOVAT VSE KOMANDY OPERATORA DRAW,
- 'ZA ISKLYUCHENIYEM KOMAND VRASHCHENIYA, MASSHTABA I TSVETA.
- 'PRIMER (SIMVOL SHCH):
- DATA "NU5R2NU4R2NU5RDBE"
- '0 0 0 0 0 0
- '0 0 0 0 0 0
- 'B 0 0 0 B 0
- 'B 0 B 0 B 0
- 'B 0 B 0 B 0
- 'B 0 B 0 B 0
- 'B 0 B 0 B 0
- 'A B B B B B C
- '0 0 0 0 0 B
- FONTDATA:
- DATA "BR2": REM PROBEL
- DATA "NURUNLBUU3LM+1,+3BF2": REM !
- DATA "BU4UBRDBD4BR": REM "
- DATA "BU3NR3BUNR3BEND3BRD3BR2BD2": REM #
- DATA "BUFEH2ENUNFD5BRBE": REM $
- DATA "BRRULNDBLE3BLLURDBD4BR2": REM %
- DATA "BR4HUHLGDFREEBLNDHLHERFGBF3": REM &
- DATA "BU5DENLBD5BR": REM '
- DATA "BRBU5GD3FBR": REM (
- DATA "BU5FD3GBR2": REM )
- DATA "BU3R2BDH2BD2E2BD4BR": REM *
- DATA "BU3R2BHD2BD2BR2": REM +
- DATA "BURGURBF": REM ,
- DATA "BU3R2BD3BR": REM -
- DATA "URDLBR2": REM .
- DATA "M+2,-5BD5BR": REM /
- DATA "BUU3ERFNM-3,+3D3GLHBDBR4": REM 0
- DATA "BU4ED5LR2BR": REM 1
- DATA "BU3UERFDG3R3BR": REM 2
- DATA "BU5R3DGFDGLHBR4BD": REM 3
- DATA "BR3U5G3DR4BF": REM 4
- DATA "BUFREUHL2U2R3BD5BR": REM 5
- DATA "BU2ERFDGLHU3ERFBD4BR": REM 6
- DATA "BU5R3DM-2,+4BR3": REM 7
- DATA "BUUEREHLGFRFDGLHBR4BD": REM 8
- DATA "BUFREU3HLGDFREBD3BR": REM 9
- DATA "URDLBU3URDLBR2BD3": REM :
- DATA "URGBU3URDLBD3BR2": REM ;
- DATA "BR2M-2,-2M+2,-2BD4BR": REM <
- DATA "BU2R2BUNL2BD3BR": REM =
- DATA "M+2,-2M-2,-2BD4BR3": REM >
- DATA "BU4ERFGDBDDLURBBFBR": REM ?
- DATA "BEBUURDNLEHLGD2FRBR2": REM @
- DATA "U4ER2D3NL3D2BR": REM A
- DATA "U5R2FGNL2FDGL2BR4": REM B
- DATA "BE3BUHLGD3FREBF": REM C
- DATA "U5R2FD3GL2BR4": REM D
- DATA "BU5BR3L3D2NR2D3R3BR": REM E
- DATA "U2NR2U3R3DBD4BR": REM F
- DATA "BE2RDGLHU3ERFBD4BR": REM G
- DATA "U3NU2R3NU2D3BR": REM H
- DATA "RNRU5NLRBD5BR": REM I
- DATA "BUNUFREU4NL3BD5BR": REM J
- DATA "U3NU2RNM+2,-2M+2,+3BR": REM K
- DATA "NU5R3NUBR": REM L
- DATA "M+1,-5M+1,+5M+1,-5M+1,+5BR": REM M
- DATA "U5M+3,+5NU5BR": REM N
- DATA "BUU3ERFD3GLHBDBR4": REM O
- DATA "U5R2FDGL2BR4BD2": REM P
- DATA "BUU3ERFD3GLHBRRFBR": REM Q
- DATA "U5R2FDGLNLF2BR": REM R
- DATA "BUFREUHLHERFBD4BR": REM S
- DATA "BR2U5BL2BDUR4DBD4BR": REM T
- DATA "BU5D4FRENU4BF": REM U
- DATA "BU5M+1,+5RNM+1,-5BR2": REM V
- DATA "BU5M+1,+5M+1,-5M+1,+5NM+1,-5BR2": REM W
- DATA "M+3,-5BL3M+3,+5BR": REM X
- DATA "BRU2NM-1,-3NM+1,-3BF2": REM Y
- DATA "BU4UR3DG3DR3NUBR": REM Z
- DATA "BU5NRD5RBR": REM [
- DATA "BU5M+2,+5BR": REM \
- DATA "BU5RD5NLBR": REM ]
- DATA "BU4M+1,-1M+1,+1BD4BR": REM ^
- DATA "BDR2BE": REM _
- DATA "BU5FBD4BR": REM `
- DATA "BU3EFD2GHERD2BR": REM A
- DATA "NU5REUHLBF3": REM B
- DATA "BE3HLGD2FREBF": REM C
- DATA "BE2BULGDFRNU5BR": REM D
- DATA "BU2R2EHLGD2FREBF": REM E
- DATA "BRU2NLNRU2ERBD5BR": REM F
- DATA "BE2BU2LGDFRNU3DNGBR": REM G
- DATA "U3NU2RFD2BR": REM H
- DATA "RNRU3NLBUUBD5BR2": REM I
- DATA "FEU3NLBUUBD5BR": REM J
- DATA "U2NU3NE2F2BR": REM K
- DATA "BUNU4FBR": REM L
- DATA "U3NUEDND3ED4BR": REM M
- DATA "U3NUEFD3BR": REM N
- DATA "BUU2ER1FD2GL1HBDBR4": REM O
- DATA "U4RFDGLBR3BD": REM P
- DATA "BE2BU2LGDFRNU3D2BE": REM Q
- DATA "U3NUERBD4BR": REM R
- DATA "BUFREHLHERFBD3BR": REM S
- DATA "BRBU5D2NLNRD2FEBF": REM T
- DATA "BU4D3FRENU3DBR": REM U
- DATA "BU4M+1,+4NM+1,-4BR2": REM V
- DATA "BU4M+1,+4M+1,-4M+1,+4NM+1,-4BR2": REM W
- DATA "M+2,-4BL2M+2,+4BR": REM X
- DATA "BU4M+1,+2ND2NM+1,-2BF2": REM Y
- DATA "BU3UR2M-2,+4R2NUBR": REM Z
- DATA "BU4BR2GDNLDFBR": REM {
- DATA "NU4BR": REM |
- DATA "BU4FDNRDGBR3": REM }
- DATA "BU2EF2EBD2BR": REM ~
- DATA "U7R4D8L4UBR5": REM RAMKA
- DATA "U4ER2D3NL3D2BR": REM A
- DATA "BU3R2FDGL2U5R3BD5BR": REM B
- DATA "U5R2FGNL2FDGL2BR4": REM V
- DATA "U5R3DBD4BR": REM G
- DATA "BDURM+1,-5RD5NL2RDBE": REM D
- DATA "BU5BR3L3D2NR2D3R3BR": REM YE
- DATA "U2ER2FD2BL4BU5DFR2EUBL2D5BR3": REM ZH
- DATA "BUFREUHEHLGBF4": REM Z
- DATA "NU5M+3,-5D5BR": REM I
- DATA "NU5M+3,-5ND5BUBL2RBR2BD6": REM Y
- DATA "U3NU2RNM+2,-2M+2,+3BR": REM K
- DATA "M+2,-5RD5BR": REM L
- DATA "M+1,-5M+1,+5M+1,-5M+1,+5BR": REM M
- DATA "U3NU2R3NU2D3BR": REM N
- DATA "BUU3ERFD3GLHBDBR4": REM O
- DATA "U5R3D5BR": REM P
- DATA "U5R2FDGL2BR4BD2": REM R
- DATA "BE3BUHLGD3FREBF": REM S
- DATA "BR2U5BL2BDUR4DBD4BR": REM T
- DATA "BUFREU4BL3D2FR2BD2BR": REM U
- DATA "BR2U5RFD2GL2HU2ERBR3BD5": REM F
- DATA "M+3,-5BL3M+3,+5BR": REM KH
- DATA "NU5R2NU5RDBE": REM TS
- DATA "BR3U5BL3D2FR2BD2BR": REM CH
- DATA "NU5R2NU4R2NU5BR": REM SH
- DATA "NU5R2NU4R2NU5RDBE": REM SHCH
- DATA "BU4URD5R2EUHL2BF3BR": REM
- DATA "BU3R2FDGL2U5BR4D5BR": REM Y
- DATA "BU5D5R2EUHL2BF3BR": REM
- DATA "BUFREU2NL2UHLGBF4": REM E
- DATA "U3NU2RUERFD3GLHU3BF4": REM YU
- DATA "E2NRLHUER2D5BR": REM YA
- DATA "BU3EFD2GHERD2BR": REM A
- DATA "BU2RFGLU3ERBD4BR": REM B
- DATA "U4RFGNLFGNLBR2": REM V
- DATA "U4R2DBD3BR": REM G
- DATA "BDURM+1,-4RD4NL2RDBUBR": REM D
- DATA "BU2R2EHLGD2FREBF": REM YE
- DATA "UENRHUBR2ND4BR2DGNLFDBR": REM ZH
- DATA "BU3ERFGNLFGLHBDBR4": REM Z
- DATA "BU4D4M+2,-4D4BR": REM I
- DATA "BU4D4M+2,-4BLNUBRD4BR": REM Y
- DATA "U2NU2NE2F2BR": REM K
- DATA "M+1,-4RD4BR": REM L
- DATA "M+1,-4M+1,+4M+1,-4M+1,+4BR": REM M
- DATA "U2NU2R2NU2D2BR": REM N
- DATA "BUU2ER1FD2GL1HBDBR4": REM O
- DATA "U4R2D4BR": REM P
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA "U4RFDGLBR3BD": REM R
- DATA "BE3HLGD2FREBF": REM S
- DATA "BU3URND4RDBD3BR": REM T
- DATA "BU4D1FRNU2D1GLBR3": REM U
- DATA "BR2U4LGDFR2EUHLBD4BR3": REM F
- DATA "M+2,-4BL2M+2,+4BR": REM KH
- DATA "BU4D4R2NU4RDBE": REM TS
- DATA "BU4D2FRNU3DBR": REM CH
- DATA "NU4RNU4RNU4BR": REM SH
- DATA "NU4RNU4RNU4RDBE": REM SHCH
- DATA "BU3URD4REUHLBF3": REM
- DATA "BU3RFDGLU4BR3D4BR": REM Y
- DATA "NU4REUHLBF3": REM
- DATA "BUFREUNLUHLGBF3BR": REM E
- DATA "U2NU2RUERFD2GLHUBF2BR2": REM YU
- DATA "ENRHUERD4BR": REM YA
- DATA "BU7BRDBRUBRBD2L3D2NR2D3R3BR": REM YE
- DATA "BU2R2EHBUUBD2LBUUBD2GD2FREBF": REM YE
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA ""
- DATA "BU2RM+1,+2M+1,-5BD5BR": REM √
- DATA "U5M+2,+5U5RBDRDLNUBDRBD2BR": REM №
- DATA ""
- DATA "BU2URDLBF2": REM ■
- DATA ""
- SUB DRAWTEXT (TEXT AS STRING, X AS INTEGER, Y AS INTEGER, FONTCOLOR AS INTEGER, FONTSIZE AS INTEGER, FONTANGLE AS INTEGER)
- 'TEXT PECHATAYEMYY TEKST
- 'X GORIZONTALNAYA POZITSIYA NACHALA TEKSTA
- 'Y VERTIKALNAYA POZITSIYA NACHALA TEKSTA
- 'FONTCOLOR TSVET SHRIFTA
- 'FONTSIZE RAZMER SHRIFTA
- 'FONTANGLE UGOL POVOROTA TEKSTA
- DIM N AS INTEGER, I AS INTEGER
- DIM C AS STRING, S AS STRING, MESSAGE AS STRING, A AS STRING
- FOR N = 1 TO LEN(TEXT)
- I = ASC(MID$(TEXT, N, 1))
- I = I - 32
- MESSAGE = MESSAGE + RTRIM$(FONT(I))
- NEXT N
- C = "C" + LTRIM$(RTRIM$(STR$(FONTCOLOR)))
- A = "TA" + LTRIM$(RTRIM$(STR$(FONTANGLE)))
- S = "S" + LTRIM$(RTRIM$(STR$(FONTSIZE * 4)))
- MESSAGE = C + A + S + MESSAGE + "TA0"
- PSET (X, Y), POINT(X, Y)
- DRAW "X" + VARPTR$(MESSAGE):
- END SUB
Рисунок 1 – Исходный текст для отрисовки векторного шрифта
Рисунок 2 – Результат отрисовки векторного шрифта
Спасибо за прочтение этой статьи.
Прикрепленные файлы: