以前ブログに、Webブラウザを作ろうとしていることを書きました。 その時少しだけ書いた、文字列描画ライブラリの紹介です。 背景 ブラウザのレンダリングエンジンを作るにあたって、扱いやすい描画バックエンドが必要だった。 GeckoはCairoを使っているようだった(過去の話?)ので、cl-cffi-gtkを試した。 しかし文字列の描画を細かく制御するにはPangoも利用しなければならなかった。 OpenGLのプリミティブぐらい気軽に扱えるものが欲しい。 ちょうどこんなものを発見した。 WebGLとシェーダでベジエ曲線を描く応用で、TTFフォントをレンダリングするというものだ。 今回はこれをベースに、文字列描画ライブラリとしてCommon Lispに移植した。 GLisph Glyph rendering engine using OpenGL shading language for Com
 
      
   
     
       
      ![[寝起きIdea] アマゾンのロボット倉庫からユーティリティ関数へ - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/20316c6834db09c46c1d69b3d0a49a126fc297fb/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFtYXpvbmF3cy5jb20lMkYwJTJGNjA5MCUyRnByb2ZpbGUtaW1hZ2VzJTJGMTQ3MzY4MjU2MD9peGxpYj1yYi00LjAuMCZhcj0xJTNBMSZmaXQ9Y3JvcCZtYXNrPWVsbGlwc2UmZm09cG5nMzImcz04MTU1MmYyMDM5OGQzOGFhMTRiZGE1NWNhNmIzYTgyNA%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253Dc88ddb4d665241b83a4cb68b790d5f7e%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JTVCJUU1JUFGJTlEJUU4JUI1JUI3JUUzJTgxJThESWRlYSU1RCUyMCVFMyU4MiVBMiVFMyU4MyU5RSVFMyU4MiVCRSVFMyU4MyVCMyVFMyU4MSVBRSVFMyU4MyVBRCVFMyU4MyU5QyVFMyU4MyU4MyVFMyU4MyU4OCVFNSU4MCU4OSVFNSVCQSVBQiVFMyU4MSU4QiVFMyU4MiU4OSVFMyU4MyVBNiVFMyU4MyVCQyVFMyU4MyU4NiVFMyU4MiVBMyVFMyU4MyVBQSVFMyU4MyU4NiVFMyU4MiVBMyVFOSU5NiVBMiVFNiU5NSVCMCVFMyU4MSVCOCZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPTQ1NTA3ZTFkNmU0NmQ3MmQ2YWViOGY2ODczMGI0Yjli%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBndWljaG8yNzE4MjgmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtcGFkPTAmcz0yZjIwMWUzMTBhYmFlMWQ3ODk3OGM4YTQ1M2QzZjc0Yg%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3D134f1cc2dcf6c8a39597fc4a56ce5bad) 
       
       
       
       
      

