ttf-parser 0.5 - TrueType ಫಾಂಟ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಹೊಸ ಲೈಬ್ರರಿ

ttf- ಪಾರ್ಸರ್ ಟ್ರೂಟೈಪ್/ಓಪನ್‌ಟೈಪ್ ಫಾಂಟ್‌ಗಳನ್ನು ಪಾರ್ಸಿಂಗ್ ಮಾಡಲು ಲೈಬ್ರರಿಯಾಗಿದೆ.
ಹೊಸ ಆವೃತ್ತಿಯು ವೇರಿಯಬಲ್ ಫಾಂಟ್‌ಗಳಿಗೆ ಸಂಪೂರ್ಣ ಬೆಂಬಲವನ್ನು ಹೊಂದಿದೆ
(ವೇರಿಯಬಲ್ ಫಾಂಟ್‌ಗಳು) ಮತ್ತು C API, ಇದರ ಪರಿಣಾಮವಾಗಿ ನಾನು ಅದನ್ನು ಲೋಕಜ್ಞಾನದಲ್ಲಿ ಜಾಹೀರಾತು ಮಾಡಲು ನಿರ್ಧರಿಸಿದೆ.

ಇತ್ತೀಚಿನವರೆಗೂ, TrueType ಫಾಂಟ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಅಗತ್ಯವಿದ್ದರೆ, ನಿಖರವಾಗಿ ಎರಡು ಆಯ್ಕೆಗಳಿವೆ: FreeType ಮತ್ತು stb_truetype. ಮೊದಲನೆಯದು ಒಂದು ದೊಡ್ಡ ಸಂಯೋಜನೆಯಾಗಿದೆ, ಎರಡನೆಯದು ಸಾಕಷ್ಟು ಕಡಿಮೆ ಸಂಖ್ಯೆಯ ಕಾರ್ಯಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.

ttf- ಪಾರ್ಸರ್ ಎಲ್ಲೋ ಮಧ್ಯದಲ್ಲಿದೆ. ಇದು ಒಂದೇ ರೀತಿಯ TrueType ಕೋಷ್ಟಕಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ (TrueType ಸ್ವರೂಪವು ಅನೇಕ ಪ್ರತ್ಯೇಕ ಬೈನರಿ ಕೋಷ್ಟಕಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ) FreeType ನಂತೆ, ಆದರೆ ಗ್ಲಿಫ್‌ಗಳನ್ನು ಸ್ವತಃ ಸೆಳೆಯುವುದಿಲ್ಲ.

ಅದೇ ಸಮಯದಲ್ಲಿ, ttf- ಪಾರ್ಸರ್ ಅನೇಕ ಇತರ ಗಮನಾರ್ಹ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಹೊಂದಿದೆ:

  1. ttf- ಪಾರ್ಸರ್ ಅನ್ನು ಅಸುರಕ್ಷಿತವಾಗಿ ಬಳಸದೆ ರಸ್ಟ್‌ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ. FreeType ಮತ್ತು stb_truetype ಅನ್ನು C ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ.
  2. ttf-parser ಮಾತ್ರ ಮೆಮೊರಿ-ಸುರಕ್ಷಿತ ಅನುಷ್ಠಾನವಾಗಿದೆ. ಯಾದೃಚ್ಛಿಕ ಸ್ಮರಣೆಯನ್ನು ಓದುವುದು ಸಾಧ್ಯವಿಲ್ಲ. ಫ್ರೀಟೈಪ್‌ನಲ್ಲಿ ದೋಷಗಳನ್ನು ನಿರಂತರವಾಗಿ ಸರಿಪಡಿಸಲಾಗುತ್ತಿದೆ ಮತ್ತು stb_truetype ತಾತ್ವಿಕವಾಗಿ, ಅನಿಯಂತ್ರಿತ ಫಾಂಟ್‌ಗಳನ್ನು ಓದಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿಲ್ಲ.
  3. ttf-parser ಮಾತ್ರ ಥ್ರೆಡ್-ಸುರಕ್ಷಿತ ಅನುಷ್ಠಾನವಾಗಿದೆ. ಎಲ್ಲಾ ಪಾರ್ಸಿಂಗ್ ವಿಧಾನಗಳು ಸ್ಥಿರವಾಗಿರುತ್ತವೆ. ವೇರಿಯಬಲ್ ಫಾಂಟ್‌ಗಳಿಗೆ ನಿರ್ದೇಶಾಂಕಗಳನ್ನು ಹೊಂದಿಸುವುದು ಮಾತ್ರ ವಿನಾಯಿತಿಯಾಗಿದೆ, ಆದರೆ ಈ ಕಾರ್ಯವು ಮರುಪ್ರವೇಶಿಸುತ್ತದೆ. ಫ್ರೀಟೈಪ್ ಮೂಲತಃ ಏಕ-ಥ್ರೆಡ್ ಆಗಿದೆ. stb_truetype - ಪುನರಾವರ್ತಿತ (ನೀವು ವಿವಿಧ ಥ್ರೆಡ್‌ಗಳಲ್ಲಿ ಪ್ರತ್ಯೇಕ ನಕಲುಗಳನ್ನು ಬಳಸಬಹುದು, ಆದರೆ ಅನೇಕವುಗಳಲ್ಲಿ ಒಂದಲ್ಲ).
  4. ttf-parser ಎಂಬುದು ರಾಶಿ ಹಂಚಿಕೆಗಳನ್ನು ಬಳಸದ ಏಕೈಕ ಅನುಷ್ಠಾನವಾಗಿದೆ. ಪಾರ್ಸಿಂಗ್ ಅನ್ನು ವೇಗಗೊಳಿಸಲು ಮತ್ತು OOM ನೊಂದಿಗೆ ಸಮಸ್ಯೆಗಳನ್ನು ತಪ್ಪಿಸಲು ಇದು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
  5. ಅಲ್ಲದೆ, ಬಹುತೇಕ ಎಲ್ಲಾ ಅಂಕಗಣಿತದ ಕಾರ್ಯಾಚರಣೆಗಳು ಮತ್ತು ಸಂಖ್ಯಾ ಪ್ರಕಾರಗಳ ಪರಿವರ್ತನೆಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ (ಸ್ಥಿರವಾಗಿ ಸೇರಿದಂತೆ).
  6. ಕೆಟ್ಟ ಸಂದರ್ಭದಲ್ಲಿ, ಗ್ರಂಥಾಲಯವು ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯಬಹುದು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, C API ನಲ್ಲಿ, ವಿನಾಯಿತಿಗಳನ್ನು ಹಿಡಿಯಲಾಗುತ್ತದೆ ಮತ್ತು ಕಾರ್ಯವು ದೋಷವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಆದರೆ ಕ್ರ್ಯಾಶ್ ಆಗುವುದಿಲ್ಲ.

ಮತ್ತು ಎಲ್ಲಾ ಭದ್ರತಾ ಖಾತರಿಗಳ ಹೊರತಾಗಿಯೂ, ttf- ಪಾರ್ಸರ್ ಸಹ ವೇಗವಾಗಿ ಅನುಷ್ಠಾನವಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, CFF2 ಅನ್ನು ಪಾರ್ಸಿಂಗ್ ಮಾಡುವುದು ಫ್ರೀಟೈಪ್‌ಗಿಂತ 3.5 ಪಟ್ಟು ವೇಗವಾಗಿರುತ್ತದೆ. ಪಾರ್ಸಿಂಗ್ glyf, ಏತನ್ಮಧ್ಯೆ, stb_truetype ಗಿಂತ 10% ನಿಧಾನವಾಗಿರುತ್ತದೆ, ಆದರೆ ಇದು ವೇರಿಯಬಲ್ ಫಾಂಟ್‌ಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ ಎಂಬ ಅಂಶದಿಂದಾಗಿ, ಇದರ ಅನುಷ್ಠಾನಕ್ಕೆ ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹಿಸುವ ಅಗತ್ಯವಿದೆ. ಮಾಹಿತಿ. ಹೆಚ್ಚಿನ ವಿವರಗಳಲ್ಲಿ ಓದಿ.

ಮೂಲ: linux.org.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ