制作されたスライドの真の姿を伝えたい〜VSフォントは終わらない〜
サイボウズ株式会社 開発本部 People Experienceチーム内 コネクト支援チームの西原(@tomio2480)です.みなさんはスライドアップロードサービスを利用したことはあるでしょうか.ここで言うスライドアップロードとは,たとえば,SlideShare,SpeakerDeck,Docswell のようなサービスのことを指します.
サイボウズでは開発本部,運用本部,サイボウズ・ラボの皆さんが発表資料をアップロードされる度に,掲載許可をいただけたものに関して Cybozu Tech と呼ばれるテックサイトに掲載をしています.西原はせいぜい発表された資料を見つけてくるくらいで,掲載に関しては何もしてませんがそういった仕組みがあります.
フットワーク軽く資料を公開できる仕組み
今回のたたかい物語を書くに先んじて,我々が関係している範囲での資料公開の仕組みについて説明しておきます.
サイボウズでは,こういった資料を公開する際,広報的な部署あるいはチームの許可を必要としません.そして,連絡の必要もありません.言い換えると,表記や公開については各チームの判断に委ねられており,特に社内に通達する必要もありません.
当然ですが,秘密情報は明かしてはならないので,関係しそうなところに先に声かけしておくのが一般的です.通常,公表される方の所属チームや,関係しそうな部署あるいはチームにレビューをもらって公開しているようです.したがって,我々のチームで Cybozu Tech に資料を掲載するのも,連絡があった分だけ,見つけて許可を得た分だけ,という状況です.
そして,アップロード先もそれぞれに委ねられています.資料製作者ご自身のアカウントで,ご自身がお使いのサービスにアップロードすることもできますし,我々のチームがもつ SpeakerDeck アカウントからアップロードすることもできます.ですから,Cybozu Tech に掲載されているスライドと,SpeakerDeck の @cybozuinsideout にアップロードされているスライドは一致しません.Cybozu Tech の方が,個人アカウントでアップロードされたスライドも含むため,より網羅性が高いです.
複雑な問題と出会ってしまった
ある日,kintone チームの紹介スライドを我々のチームの管理する SpeakerDeck のアカウントからアップロードしてほしいと依頼がありました.通常,PDF をいただいてそれを単にアップロードしておしまい,となるのですが,ここで 2 つの問題に気づきます.
意図しない文字の縁取りが現れる
図 1 のとおり,大きな文字にかすれた縁取りの装飾がついてしまっています.真の姿は 図 2 のとおり,縁取りはありません.
Transcript の文字化けが現れる
図 3 のとおり,一部は日本語が正しく表示されていますが,大多数の文字が化けてしまっています.真の姿は 図 4 のとおりです.
何をすればなおるのか
我々の興味は何をすればこの悲しい状態を回避し,真の姿のスライドをみなさんに見てもらえるか,ということです.とりあえずの解決ではありますが,回避方法は見つけられています.ここまでに多くの苦労をしたので,本当ならそれら全てを紹介したいのです.しかし,とんでもない長さになるので,以下のスライドをもって報告にかえさせていただきます.
とりあえずこれで対策とする
今のところ,我々が問題だと思っていた現象を明確に解消できる方法は,以下のとおりです.かなり限定的な解決方法であるため,明らかにこれより筋のいい解決方法があると信じています.もしご存じの方がいらっしゃったら,何らかの記事を世に放っていただきたいです.よろしくお願いします.
まあ,スライドアップロードサービス上にアップロードしてみて,問題が起きたら差し替える,というスタンスでもいいので,起きた事象によって以下を確認して対応するのでもいいでしょう.
【Transcript 文字化け対策】pdffonts コマンドを使って,フォントが適切に埋め込まれているかどうか,つまり表示される emb,sub,uni の 3 つがいずれも yes であることを確認する.
【謎縁取り対策】太字を使用している箇所が,適切に太字スタイルのフォントを適用できているか,以下の 2 つの方法で確認する.
太字を使用している場合 pdffonts コマンドを使って,使用しているつもりのスタイルのフォントが埋め込まれているか,つまり表示されるフォント名一覧の中に「〇〇-Bold」といったような,太字スタイルのフォントがあることを確認する.
太字とした箇所に太字スタイルのフォントが適用されているか,つまりレギュラーフォントを Ctrl+b や [B] ボタンで太字化した,太字スタイルのフォントを使っていないものではないことを確認する.
順に解説します.
【Transcript 文字化け対策】フォントが適切に埋め込まれているか
これは SpeakerDeck でいう Transcript 文字化け問題が起きるかどうかを確認するための作業です.
この記事で pdffonts コマンドは初登場です.XpdfReader というツール群をインストールすると,pdffonts を使うことができます.インストールについては,以下の記事を参考にいたしました.最初に検索をかけたとき,さも pdffonts というコマンドが OS 標準に入っているかのような解説を見つけて,喜んで打ち込みましたが,残念ながら少なくとも macOS には備わっていませんでした.自分でインストールしましょう.
後ほど実行結果を示しますが,問題が現れなかった PDF では以下の 3 つの要素が yes と出力されていました.
emb - フォントが埋め込まれているか
sub - フォントはサブセットか
uni - 明示的な ToUnicode マップがあるか
ここで pdffonts を実行した結果の一例を紹介します.この例では一番下から 2 つ分の「TsukuARdGothic-Regular」の uni が no になっているため,このフォントを当てられている文字については SpeakerDeck にアップロードすると Transcript が文字化けを起こすと思われます.
% pdffonts Mac_OTF_TTF_OTF.pdf
name type emb sub uni prob object ID
---------------------------------------------- ----------------- --- --- --- ---- ---------
AAAAAB+NotoSansCJKjp-Regular CID Type 0C yes yes yes 7 0
AAAAAC+NotoSansCJKjp-Bold CID Type 0C yes yes yes 8 0
AAAAAD+NotoSansCJKjp-Regular CID Type 0C yes yes yes 9 0
AAAAAE+NotoSansCJKjp-Bold CID Type 0C yes yes yes 10 0
AAAAAF+TsukuARdGothic-Regular CID Type 0C yes yes no 16 0
AAAAAG+TsukuARdGothic-Regular CID Type 0C yes yes no 17 0
また,name に関連して,後々ここを見返すことになるかもしれません.よく見ると「TsukuARdGothic-Regular」が 2 つあります.推測するに,後述する太字を適切に設定できていないことに由来すると思われます.
自分が実験した中では,uni 以外の emb,sub は no とならない PDF しか生成できなかったため,no になった場合に何が起こるかまでは把握していません.そのため yes であればうまくいくのかな,くらいの感じであまりよくわかっていません.
ただし,uni が no である PDF のときだけ SpeakerDeck の Transcript が文字化けを起こすと確認できています.そこでひとまず,emb,sub,uni の 3 要素がすべて yes であるときに,スライドアップロードサービス上でも真の姿を現す,と結論づけています.
予想では,emb は yes でないと厳しそうで,sub については yes/no どちらでも大丈夫なんじゃないかなと思っています.もしかすると sub はむしろ no の方がいいということもありえるかも……? サブセットというものの理解が曖昧なのですが,一部の必要なフォントのみを含むフォント,と理解していて,これが正しければ,このサブセットに含まれない文字を使った場合,文字が化けたりするのかなぁと,考えていました.確かめる気力は……
また余談ですが,今回使用した「FOT-筑紫A丸ゴシック Std」を使って Windows と macOS の両環境にそれぞれインストールされている PowerPoint を使ってスライドを作りましたが,Windows 環境では uni yes,macOS 環境では uni no と結果が割れました.もしかすると OS に由来する何かもある可能性があるとして,我々はひとまず Windows 環境の PowerPoint にてエクスポートした PDF で対処することとしました.
【謎縁取り対策】適切に太字スタイルのフォントを適用できているか
今度は,太字に謎の縁取りが現れないかどうかを確認するための作業です.
pdffonts を実行すると,name という項目に PDF に埋め込まれているフォントの名前が一覧表示されます.ここで資料中に太字を使っている場合は「〇〇-Bold」というような,太字スタイルのフォントが一覧に表示されるかを確認してください.もし,それがないのなら,サービスによっては謎の縁取りが現れるなど,不具合を起こす可能性があります.
詳しくはスライドの p.p 47-48 をご覧いただきたいですが,かいつまんで解説をします.図5 のとおり太字表現はいくつかの方法で実現されています.
同じ文字を少しずつずらして表示し,太く見せる.
文字の輪郭に沿って線を引き,太く見せる.
レギュラースタイルのフォントと太字スタイルのフォントを別に作る.
ここで,今回使用しているスライド作成ツール PowerPoint については,Ctrl+b や [B] ボタンを押して太字にする方法で選ばれているのは,2. もしくは 3. だと思われます.そして,このどちらが選ばれるかについては,フォントによるらしいのです.幸い,この 2. あるいは 3. のどちらで太字で実現されているか,確認する方法があります.
図 6 は Ctrl+b をつかって文字を太くし,フォント選択のプルダウンから選択中のフォントを見に行った様子です.ご覧のとおり,フォント選択上では R つまりレギュラースタイルのフォントが選ばれています.この場合,スライドアップロードサービス上では,謎の縁取りが出てしまうことが想定されます.ちなみに以下,図 7 で確認できるとおり,実は [B] ボタンの状態を見ると,太字が適用されている様子も確認できます.
今回のこの太字は,先のプルダウンの確認結果と併せると,太字スタイルのフォントを使っていないが,太字に見えるような処置をしている,という状態であることがわかります.
また,[B] は大体,太字スタイルのフォントを選んだときも,適用されているような見た目になるので,この [B] ボタンが ON になっているからといって,怪しい太字であると断定してはいけません.フォント選択のプルダウンを必ず確認しましょう.
さらに追い討ちをかけると,太字スタイルのフォントを Ctrl+b あるいは [B] ボタンで太字化することもできてしまいます.こうなると [B] ボタンの状態だけでは,謎の縁取りが発生するかどうかはわかりません.スライドアップロードサービス上にアップロードしてみて,何かが起きたらそういうことだったんだなと粛々と修正するといいと思います.再アップロードできるサービスであれば,この機能に感謝しましょう.
さっぱり書こうと思ったもののムリでした
執筆能力の問題があることは棚に上げて…… 今回のこの事象を言葉で表現して,誰でもわかる状態にするのは難しいなと思っていました.実際,スライドテンプレートを作って対応すればいい,といった単純なものではなく,環境や操作に起因する問題も含まれているため,正直困りました.
はじめに述べたとおり,サイボウズでは各人に情報発信の方法が任されています.そのため,先に説明したとおり,操作や環境に起因する問題があるため,未然にこれらを防ぎきるのは難しいだろうと思っています.
現段階では,我々のチームが管理する SpeakerDeck にアップロードするものは我々でチェックしながらアップロードする方法を取ることができますが,それ以外の各個人のアカウントに上げられたものは,見つけ次第お知らせをしていくことになるかなぁと考えています.今この現象について理解できている人数も少ないので,スライドの修正作業もしばらくかかる気がします.
最後に,このスライド問題に取り組もうと思ったのは,開発本部,運用本部,サイボウズ・ラボのみなさんがたくさん情報発信をしているからです.これらの情報を発信している Twitter アカウントもありますので,そちらをぜひフォローしてみてください.どうぞよろしくお願いいたします.