2020年4月15日水曜日

Google Noto Fonts

家で仕事をする中でドキュメントを書くことが多いのですが、色々とフォントのことが気になります。

ちょっと Unicode 全般について勉強する必要も出てきてて、出来るだけ多くの文字が、豆腐文字になることなく表示できるフォントを探してます。

そのまさに「NO more TOfu」となるフォントがGoogle Noto Fontsの様です。

この Google Noto Fonts をメインマシン(Ubuntu 18.04)に入れてみようと思います。

Google Noto Fonts の入手

Google Noto Fonts は以下のサイトから入手可能です。

Google Noto Fonts/Beautiful and free fonts for all languages

ページ上の [DOWNLOAD ALL FONTS] ボタンをクリックするとダウンロードが始まります。

ダウンロードボタンの下に書いてある通り1.1GBもあるフォントセットです。

Google Noto Fonts のインストール

インストールは上記ページの[Install]の所の説明の通りです。

How to install fonts

Windows/macOS/Linuxでのインストール方法の説明がのっています。

僕は Ubuntu18.04 なので Linux インストールなのですが、「for a single user」か「for all users」かの選択肢があります。

どちらにしようか悩みましたが「for all users」にしておこうかと思います。

その手順は以下の様です。

# for all users
sudo mkdir -p /usr/share/fonts/opentype/noto
sudo cp *otf *otc /usr/share/fonts/opentype/noto
sudo fc-cache -f -v # optional

ちょっと2つ目のコマンドが正常動作しないので、以下としました。

sudo cp *.otf  /usr/share/fonts/opentype/noto

そして fc-cache をして終了です。

notoフォントとして 137フォント が取り込まれてますね。

/usr/share/fonts/opentype/noto: caching, new cache contents: 137 fonts, 0 dirs

2020年4月13日月曜日

TeX Live 2020 での LuaLatex エンジン

前の記事 で、TeX Live 2020 は 2019 から対して変わってないのでは、みたいなことを書きましたが、 ちょっと使ってみて、それなりに大きな違いが発生していることに気が付きました。

僕はpdfの直接的な生成を考えて LuaLatex を、Eclipse上のTeXLipseで使っています。

TeXLipse上での実行時にコンソールに表示される最初のメッセージは、これまで、

running: /usr/local/texlive/2019/bin/x86_64-linux/lualatex -synctex=1 -interaction=nonstopmode document.tex 
lualatex> This is LuaTeX, Version 1.10.0 (TeX Live 2019) 

だったのですが、TeX Live 2020 に変えると、

running: /usr/local/texlive/2020/bin/x86_64-linux/lualatex -synctex=1 -interaction=nonstopmode document.tex 
lualatex> This is LuaHBTeX, Version 1.12.0 (TeX Live 2020) 

となっていることに気が付きました。

これまではLuaTeXベースだったのが TeX Live 2020 からは LuaHBTeXベースになったのですね。

LuaHBTeXは前にLuaTeXについて調べた時に存在は知っていたのですが、HarfBuzzライブラリを組み込んだLuaTeXのことみたいです。

HarfBuzzライブラリとは、フリーのOpenTypeテキストシェーピングエンジン(フォントレンダリングエンジン)みたいです。

ここが開発元で Android, Chrome, ChromeOS, Firefox, OpenJDK, Qt 等にも使われているみたいです。

TeX Live 2020 から変更されたことの情報源を探していたのですが、 LATEX News/Issue 31, February 2020 に記載がありました。

Concerning this release . . . (LuaLATEX engine) The new LuaHBTEX engine is LuaTEX with an embedded HarfBuzz library. HarfBuzz can be used by setting a suitable renderer in the font declaration. A basic interface for that is provided by fontspec. This additional font renderer will greatly improve the shaping of various scripts when using LuaLATEX, many of which are currently handled correctly only by X TEEX, which always uses HarfBuzz. To simplify testing of the new engine, binaries have already been added to MiKTEX and TEX Live 2019 and both distributions have already now changed the LuaLATEX-dev format to use it. Going forward, LuaLATEX (and LuaLATEX-dev) will both use the LuaHBTEX engine. The timing of the switch to the LuaHBTEX engine depends on the distribution you use (for TEX Live this will be with TEX Live 2020).

とのことです。

TeX Live 2020 のインストール

TeX Live 2020 がリリースされました。

TeX Liveは常時updateされているため、2020リリースの目玉となる特徴とかあるのか分かりませんが、 既にTeX Live 2019でのupdateが止まっているため、2020を入れてみようと思います。

プラットフォームはいつもながらの Ubuntu 18.04 です。

TeX Live 2020 のインストール

リリースの ダウンロードページ から install-tl-unx.tar.gz をダウンロードし、tar.gz を展開して出来る install-tl を実行することで、後は自動的にインストールされます。

sudo ./install-tl 
Loading http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/tlpkg/texlive.tlpdb
Installing TeX Live 2020 from: http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet (verified)
Platform: x86_64-linux => 'GNU/Linux on x86_64'
Distribution: net  (downloading)
Using URL: http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet
Directory for temporary files: /tmp/aiomRbLkQx

======================> TeX Live installation procedure <=====================

======>   Letters/digits in <angle brackets> indicate   <=======
======>   menu items for actions or customizations      <=======

 Detected platform: GNU/Linux on x86_64
 
 <B> set binary platforms: 1 out of 16

 <S> set installation scheme: scheme-full

 <C> set installation collections:
     40 collections out of 41, disk space required: 6524 MB

 <D> set directories:
   TEXDIR (the main TeX directory):
     /usr/local/texlive/2020
   TEXMFLOCAL (directory for site-wide local files):
     /usr/local/texlive/texmf-local
   TEXMFSYSVAR (directory for variable and automatically generated data):
     /usr/local/texlive/2020/texmf-var
   TEXMFSYSCONFIG (directory for local config):
     /usr/local/texlive/2020/texmf-config
   TEXMFVAR (personal directory for variable and automatically generated data):
     ~/.texlive2020/texmf-var
   TEXMFCONFIG (personal directory for local config):
     ~/.texlive2020/texmf-config
   TEXMFHOME (directory for user-specific files):
     ~/texmf

 <O> options:
   [ ] use letter size instead of A4 by default
   [X] allow execution of restricted list of programs via \write18
   [X] create all format files
   [X] install macro/font doc tree
   [X] install macro/font source tree
   [ ] create symlinks to standard directories

 <V> set up for portable installation

Actions:
 <I> start installation to hard disk
 <P> save installation profile to 'texlive.profile' and exit
 <H> help
 <Q> quit

TeX Liveはパッケージ数が多いので、ダウンロード・インストール完了まで結構時間がかかります。

実際、3986パッケージのダウンロードにほぼ1時間かかりました。

ダウンロードサイトの帯域が狭い気はしますが、通常のupdate時も相応の時間がかかるので、最近はあまり気にしていません。

ざっと下のような感じでした。

Installing [3981/3986, time/total: 01:04:20/01:04:22]: zref [684k]
Installing [3982/3986, time/total: 01:04:21/01:04:22]: zwgetfdate [242k]
Installing [3983/3986, time/total: 01:04:21/01:04:22]: zwpagelayout [630k]
Installing [3984/3986, time/total: 01:04:22/01:04:22]: zxjafbfont [3k]
Installing [3985/3986, time/total: 01:04:23/01:04:23]: zxjafont [181k]
Installing [3986/3986, time/total: 01:04:23/01:04:23]: zxjatype [144k]

インストール後のファイルサイズはざっと7GBほどみたいですね。 インストール後に一度、既存のTeXドキュメントを lualatex でビルドしたので、 もしかしたらその際に生成されたファイルも含めてなのかもしれませんが、そのぐらいのサイズは必要となる模様です。

$ du -s /usr/local/texlive/2020/
6927572 /usr/local/texlive/2020/

2020年4月12日日曜日

Ubuntu 18.04 での POCO C++ Libraries 構築 (1)

POCO C++ Libraries

POCO C++ Libraries とは C++ ベースでのネットワークアプリケーションやインターネットアプリケーションを開発するためのオープンソースのクロスプラットフォームライブラリです。以下のサイトで公開されています(画像をクリックすると開発元のホームページにジャンプします):

デスクトップやサーバ、IoTデバイスや組込みシステムまでの適用が想定されているライブラリであり、 Boost Software License として公開されています。

その特徴は開発元の 「Features」 に示されています。

国内ではサイト「POCO Fanatic」 に色々と詳しい情報が掲載されています。

2018年以降は更新されてないみたいで、POCOのv1.8.1までの話しがのっています。

なお POCO の最新バージョンは 1.10.1 (2020-02-10) みたいです。

今回、ちょっと作りたいものがあって C++ での webフレームワークみたいなのを探していたのですが、 この POCO がひっかかりまして、少し試してみたいと思っています。

Ubuntu 18.04 でのライブラリ構築

僕の開発用メインマシンは Ubuntu 18.04 なので、その上での開発環境整備を進めたく思います。

POCOのダウンロードページ に行くとダウンロード情報が載っていますが、今回は、 COMPLETE EDITION (全てのライブラリが含まれているが外部ライブラリとして OpenSSL, MySQLクライアント, ODBCライブラリが必要) で進めてみようと思います。

まずは同ページにある poco-1.10.1-all.tar.gz をダウンロードして展開します。

そこに README ファイルがあり、そこにインストール方法が書かれています。

Linux では cmake でのインストールか configure でのインストールとの 2者があるみたいです。

今回は Windows 上でもビルドが可能である cmake で試してみようと思います。

Ubuntu 18.04 での cmake ビルド

READMEファイル上の記載では以下のように進めるとのことです。

1. create a cmake-build directory (e.g. in the POCO root directory):
$ mkdir cmake-build

2. and run CMake from there:
$ cd cmake-build
$ cmake ..
$ make -s -j (or build the generated Visual Studio solution on Windows)

今回はこの通りにすすめてみようと思います。

cmake ..の所までは進めたのですが、そこで以下のメッセージが表示されていました:

-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR 
(missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR) 
-- Could NOT find APR (missing: APR_INCLUDE_DIR APR_LIBRARY) 
-- Could NOT find APRUTIL (missing: APRUTIL_INCLUDE_DIR APRUTIL_LIBRARY) 
-- Could NOT find Apache2 (missing: APACHE2_INCLUDE_DIR) 
-- Could NOT find MYSQL (missing: MYSQL_INCLUDE_DIR MYSQL_LIBRARY) 
-- Could NOT find PostgreSQL (missing: PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR) 
-- Could NOT find ODBC (missing: ODBC_LIBRARY ODBC_INCLUDE_DIR) 

開発マシンとして色々と開発用ライブラリは入れてきましたが、まだまだ入っていないものが多いのですね。。。

ざっとネットで検索して以下のパッケージを追加でインストールしました。わかり易く apt install での インストールパッケージ表現で記載しておきます。

    sudo apt install openssl-dev libssl-dev libapr1-dev libaprutil1-dev apache2-dev libmysqlclient-dev libpq-dev unixodbc-dev

これで cmake を無事に通りました。その時の表示を参考までに以下に掲載しておきます。

~/POCO/poco-1.10.1-all/cmake-build$ cmake ..
-- Checking for C++14 compiler
-- Checking for C++14 compiler - available
-- Found ODBC: /usr/lib/x86_64-linux-gnu/libodbc.so  
-- Building without tests & samples
-- Using internal sqlite, zlib, pcre, expat, ...
-- SQLite Support Enabled
-- MySQL Support Disabled
-- PostgreSQL Support Disabled
-- ODBC Support Disabled
-- CMake 3.10.2 successfully configured Poco using Unix Makefiles generator
-- Poco package version: 1.10.1
-- Building dynamic libraries
-- [cmake] Installation target path: /usr/local
-- [cmake] Bulid for OS type:  Linux
-- [cmake] Build for OS version: 5.3.0-46-generic
-- [cmake] Build for CPU type:  x86_64
-- [cmake] Build type:    RelWithDebInfo
-- [cmake] Build with cxx flags: -O2 -g -DNDEBUG 
-- [cmake] Build with c flags:  -O2 -g -DNDEBUG 
-- Building: Encodings
-- Building: XML
-- Building: JSON
-- Building: Util
-- Building: Net
-- Building: MongoDB
-- Building: Redis
-- Building: Data
-- Building: Zip
-- Building: PageCompiler
-- Building: File2Page
-- Configuring done
-- Generating done
-- Build files have been written to: ~/POCO/poco-1.10.1-all/cmake-build

無事に cmake が通ったので make でビルドを行わせました。

make の -j オプションということもありますが、途中、結構メモリを使用するみたいです。

途中の様子は以下のパフォーマンスモニタの通りです。

途中でメモリ使用量が30%から90%まで一気に増えていきました。

開発マシンのメモリ搭載量は16GBで、その60%を使うみたいなので、さっくりと10GBぐらいはメモリを消費する形でしょうか。

ただ、そのぐらいまでは一気にメモリを使いますが、それ以降は一つずつライブラリのビルドが行われていましたので、 メモリ使用量は増えず、数分程度でエラーなくビルドが完了しました。


これで無事にライブラリが生成出来たようなので次回は色々と使って試してみるのと、ライブラリの内部調査もしてみようかと思います。

それで現在作ろうとしているものに使えそうと判断したら、少しずつその開発を進めたく思います。

GNU Emacs for Windows における最近の IMEパッチ問題

自分は GNU Emacs 使いなのですが、Windows版の Emacs を使用する場合、IMEパッチの問題がありました。 ざっくり言うと、FSFの正規のリリースバイナリだと日本語変換のIMEに切り替えた時、インラインで候補文字が表示されないという問題です。そのために有志の方々...