ttf- ಪಾರ್ಸರ್ ಟ್ರೂಟೈಪ್/ಓಪನ್ಟೈಪ್ ಫಾಂಟ್ಗಳನ್ನು ಪಾರ್ಸಿಂಗ್ ಮಾಡಲು ಲೈಬ್ರರಿಯಾಗಿದೆ.
ಹೊಸ ಆವೃತ್ತಿಯು ವೇರಿಯಬಲ್ ಫಾಂಟ್ಗಳಿಗೆ ಸಂಪೂರ್ಣ ಬೆಂಬಲವನ್ನು ಹೊಂದಿದೆ
(ವೇರಿಯಬಲ್ ಫಾಂಟ್ಗಳು) ಮತ್ತು C API, ಇದರ ಪರಿಣಾಮವಾಗಿ ನಾನು ಅದನ್ನು ಲೋಕಜ್ಞಾನದಲ್ಲಿ ಜಾಹೀರಾತು ಮಾಡಲು ನಿರ್ಧರಿಸಿದೆ.
ಇತ್ತೀಚಿನವರೆಗೂ, TrueType ಫಾಂಟ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಅಗತ್ಯವಿದ್ದರೆ, ನಿಖರವಾಗಿ ಎರಡು ಆಯ್ಕೆಗಳಿವೆ: FreeType ಮತ್ತು stb_truetype. ಮೊದಲನೆಯದು ಒಂದು ದೊಡ್ಡ ಸಂಯೋಜನೆಯಾಗಿದೆ, ಎರಡನೆಯದು ಸಾಕಷ್ಟು ಕಡಿಮೆ ಸಂಖ್ಯೆಯ ಕಾರ್ಯಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.
ttf- ಪಾರ್ಸರ್ ಎಲ್ಲೋ ಮಧ್ಯದಲ್ಲಿದೆ. ಇದು ಒಂದೇ ರೀತಿಯ TrueType ಕೋಷ್ಟಕಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ (TrueType ಸ್ವರೂಪವು ಅನೇಕ ಪ್ರತ್ಯೇಕ ಬೈನರಿ ಕೋಷ್ಟಕಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ) FreeType ನಂತೆ, ಆದರೆ ಗ್ಲಿಫ್ಗಳನ್ನು ಸ್ವತಃ ಸೆಳೆಯುವುದಿಲ್ಲ.
ಅದೇ ಸಮಯದಲ್ಲಿ, ttf- ಪಾರ್ಸರ್ ಅನೇಕ ಇತರ ಗಮನಾರ್ಹ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಹೊಂದಿದೆ:
- ttf- ಪಾರ್ಸರ್ ಅನ್ನು ಅಸುರಕ್ಷಿತವಾಗಿ ಬಳಸದೆ ರಸ್ಟ್ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ. FreeType ಮತ್ತು stb_truetype ಅನ್ನು C ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ.
- ttf-parser ಮಾತ್ರ ಮೆಮೊರಿ-ಸುರಕ್ಷಿತ ಅನುಷ್ಠಾನವಾಗಿದೆ. ಯಾದೃಚ್ಛಿಕ ಸ್ಮರಣೆಯನ್ನು ಓದುವುದು ಸಾಧ್ಯವಿಲ್ಲ. ಫ್ರೀಟೈಪ್ನಲ್ಲಿ ದೋಷಗಳನ್ನು ನಿರಂತರವಾಗಿ ಸರಿಪಡಿಸಲಾಗುತ್ತಿದೆ ಮತ್ತು stb_truetype ತಾತ್ವಿಕವಾಗಿ, ಅನಿಯಂತ್ರಿತ ಫಾಂಟ್ಗಳನ್ನು ಓದಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿಲ್ಲ.
- ttf-parser ಮಾತ್ರ ಥ್ರೆಡ್-ಸುರಕ್ಷಿತ ಅನುಷ್ಠಾನವಾಗಿದೆ. ಎಲ್ಲಾ ಪಾರ್ಸಿಂಗ್ ವಿಧಾನಗಳು ಸ್ಥಿರವಾಗಿರುತ್ತವೆ. ವೇರಿಯಬಲ್ ಫಾಂಟ್ಗಳಿಗೆ ನಿರ್ದೇಶಾಂಕಗಳನ್ನು ಹೊಂದಿಸುವುದು ಮಾತ್ರ ವಿನಾಯಿತಿಯಾಗಿದೆ, ಆದರೆ ಈ ಕಾರ್ಯವು ಮರುಪ್ರವೇಶಿಸುತ್ತದೆ. ಫ್ರೀಟೈಪ್ ಮೂಲತಃ ಏಕ-ಥ್ರೆಡ್ ಆಗಿದೆ. stb_truetype - ಪುನರಾವರ್ತಿತ (ನೀವು ವಿವಿಧ ಥ್ರೆಡ್ಗಳಲ್ಲಿ ಪ್ರತ್ಯೇಕ ನಕಲುಗಳನ್ನು ಬಳಸಬಹುದು, ಆದರೆ ಅನೇಕವುಗಳಲ್ಲಿ ಒಂದಲ್ಲ).
- ttf-parser ಎಂಬುದು ರಾಶಿ ಹಂಚಿಕೆಗಳನ್ನು ಬಳಸದ ಏಕೈಕ ಅನುಷ್ಠಾನವಾಗಿದೆ. ಪಾರ್ಸಿಂಗ್ ಅನ್ನು ವೇಗಗೊಳಿಸಲು ಮತ್ತು OOM ನೊಂದಿಗೆ ಸಮಸ್ಯೆಗಳನ್ನು ತಪ್ಪಿಸಲು ಇದು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
- ಅಲ್ಲದೆ, ಬಹುತೇಕ ಎಲ್ಲಾ ಅಂಕಗಣಿತದ ಕಾರ್ಯಾಚರಣೆಗಳು ಮತ್ತು ಸಂಖ್ಯಾ ಪ್ರಕಾರಗಳ ಪರಿವರ್ತನೆಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ (ಸ್ಥಿರವಾಗಿ ಸೇರಿದಂತೆ).
- ಕೆಟ್ಟ ಸಂದರ್ಭದಲ್ಲಿ, ಗ್ರಂಥಾಲಯವು ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯಬಹುದು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, C API ನಲ್ಲಿ, ವಿನಾಯಿತಿಗಳನ್ನು ಹಿಡಿಯಲಾಗುತ್ತದೆ ಮತ್ತು ಕಾರ್ಯವು ದೋಷವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಆದರೆ ಕ್ರ್ಯಾಶ್ ಆಗುವುದಿಲ್ಲ.
ಮತ್ತು ಎಲ್ಲಾ ಭದ್ರತಾ ಖಾತರಿಗಳ ಹೊರತಾಗಿಯೂ, ttf- ಪಾರ್ಸರ್ ಸಹ ವೇಗವಾಗಿ ಅನುಷ್ಠಾನವಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, CFF2 ಅನ್ನು ಪಾರ್ಸಿಂಗ್ ಮಾಡುವುದು ಫ್ರೀಟೈಪ್ಗಿಂತ 3.5 ಪಟ್ಟು ವೇಗವಾಗಿರುತ್ತದೆ. ಪಾರ್ಸಿಂಗ್ glyf, ಏತನ್ಮಧ್ಯೆ, stb_truetype ಗಿಂತ 10% ನಿಧಾನವಾಗಿರುತ್ತದೆ, ಆದರೆ ಇದು ವೇರಿಯಬಲ್ ಫಾಂಟ್ಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ ಎಂಬ ಅಂಶದಿಂದಾಗಿ, ಇದರ ಅನುಷ್ಠಾನಕ್ಕೆ ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹಿಸುವ ಅಗತ್ಯವಿದೆ. ಮಾಹಿತಿ. ಹೆಚ್ಚಿನ ವಿವರಗಳಲ್ಲಿ ಓದಿ.
ಮೂಲ: linux.org.ru