拙作のPDFライブラリでは未対応だったので
CFFも埋め込み出来るように改造したのだが、CFFのクセが強くて苦戦する。TTFファイルは昔のMacのリソースフォークのような名前付きのリソースが複数詰め込まれた複合ファイル形式になっている。そこに無理やりAdobeのPSフォントを詰め込んだのがOpenTypeらしい。”CFF”というリソースがそれになるのだが、それ自身が更に複合ファイル化されていてマトリョーシカ状態になっている。AcrobatReaderで読み込めるまでは早かったが、ChromeやmacOSのプレビューで化けたりと試行錯誤の末やっと表示できるようになった。
無駄に頑張ってみたw
2022/6/19 日曜日
OpenType/CFF
2022/5/15 日曜日
オレオレ nuget
やり方を忘れてしまっていたので備忘録
自作パッケージの準備と作成
<PropertyGroup> <PackageId>OreOre</PackageId> <Version>1.0.0</Version> <Authors>my_name</Authors> <Company>my_company</Company> </PropertyGroup>
$ dotnet pack -c Release
これで”OreOre-1.0.0.nupkg”が出来上がる。
自作パッケージのローカルな置き場を追加する。nuget.configを直接編集するかコマンドラインにて:
$ dotnet nuget add source <dir-for-packages> -n <source-name> $ dotnet nuget list source
後はここに自作のパッケージを放り込めばいい。
自作パッケージを別のプロジェクトから参照するには:
$ dotnet add package OreOre $ dotnet restore
これで参照できるようになる。
2022/5/4 水曜日
VSCode+MSTest
当方がやり方を間違えてるのか?
同じ非同期処理のデバッグをLinux上のdotnetをリモートでデバッグするとデバッグ完了時に落ちてしまう。まったく同じコードをWindows上でやると問題ない、、、謎だ。一応、TestMethodの戻り値にTaskは返せるらしいのだが挙動が異なってしまう。
2022/4/19 火曜日
SSH+Apache+PHP+VSCode
今更ながらVSCodeの汎用性の高さに驚いているのだが
WindowsのVSCodeからSSH-RemoteでLinux上のApache+PHPのデバッグって出来るんだろうか?と試してみる。実際の所、基本的なデバッグならいとも簡単に出来てしまうのだが、SSHで入っているので/homeのdirをApacheからアクセス可能にしようとしてドハマりする。このやり方は無理かな、、、
取り敢えずphp xdebug3の設定は:
xdebug.mode=debug xdebug.start_with_request=yes
これでVSCode側でデバッガを起動してListen状態にしブラウザで当該のページをアクセスするとデバッグが開始された。
VSCodeに死角なしw
2022/4/18 月曜日
VSCodeでのUnitTest
どういう訳か上手くいかない
エラーログを見ていると、ビルドしたdllへの参照パスが若干おかしい。通常は ”xxx/bin/Debug/net6.0/target.dll”のはずが”xxx/bin/Debug/net6.0/ref/target.dll”と余計な”ref”が入っている。よくわからないが英語のサイトでは下記をprojに入れてみろ:
<PropertyGroup>
<ProduceReferenceAssemblyInOutDir>true</ProduceReferenceAssemblyInOutDir>
</PropertyGroup>
とあったので試してみたら上手く行った。
何の事やら、、、w
非Null許容型
c# 8.0では非Null許容型が導入された
参照型の変数にnullを代入したり出来なくなる。dotnet newで作成したプロジェクトでは、これが”enable”になっていたので、csprojに
<PropertyGroup> <Nullable>disable</Nullable> </PropertyGroup>
と追記しておかないとエラーやらワーニングで怒られる。過去のソースを何も知らずにビルドすると山のようなエラーとなるだろうw
ソースの一部分だけpragmaみたいにenable/disableする事も出来るので局所的であればそちらで逃げることも可能だ。
今後、新規で作成する場合は”enable”にした方がいいだろう
コマンドライン dotnet
dotnetのコマンドをついつい忘れてしまうので、空のソリューションから新規プロジェクトの作成と追加までを下記に:
$ dotnet new sln $ dotnet new classlib -f net6.0 -o someproj $ dotnet sln add someproj/someproj.csproj $ dotnet new mstest -o sometest $ cd sometest $ dotnet add reference ../someproj/someproj.csproj $ cd .. $ dotnet sln add sometest/sometest.csproj $ dotnet build $ cd sometest $ dotnet test
2021/8/26 木曜日
Linux DRM
Linux上で直接GPUを操作する仕組み
SDL2でもDRM対応でビルドすればSDLが内部的に使ってくれるようだ。直接DRMを操作するサンプルがあったのでx86 Linuxで試してみると何やら画面が切り替わった。Masterが同時に一つだけという制約があるので、X-Windowが動作していると同時使用できない。確かに/dev/dri/card0というデバイスが存在しているので、これがDRMのドライバだろう。fbに投射する事もできるようだが何しろ解説が少ないのでよくわからない。
SDL2をDRM対応で使った方が楽だという事はわかったw
VSCodeでNuGet
VisualStudio Proで甘やかされているので
手動でどうやるの?と思っていたが、VSCodeにもplug-inが用意されていた。ちとImageを扱いたかったのでdotnet coreでもSystem.Drawingが使えるようにしてみる。依存関係もplug-inがやってくれるのでjsonを手書きしなくてもいいようだ。
簡単な事ならこれだけで事足りるな
2021/8/22 日曜日
iOS/macOSでGCKeyboardを試す
iOS/macOSのGCKeyboardを試してみる
KeyboardのKeyイベントを受け取るGame向けのAPIがiOS 14から使えるようになったそうで、実際試してみる。Keyboardの接続eventにハンドラを登録し、そこでKeyChangeのイベントを取得するという手順でいたって簡単。iOS/macOSでも使い方は変わらない。クセがあるのは、KeyCodeでどのKeyかを判別するのだが接続した段階でCodeが決定するようで定数ではないようだ。更に、US配列でKeyCodeが飛んでくるのでJP配列KBではKey表記とKeyCodeが乖離してしまうKeyがある。BluetoothとUSB接続のいずれでも動作したが、iPadPro純正のお高いKBは持っていないので試せない。
GameControllerというだけあってGame用だ。