Apple の脅威の通知と金銭目当てのスパイウェアへの対策について

しばらく返答が寄せられていないようです。 再度ディスカッションを開始するには、新たに質問してください。

色つきテキストを、コマンド・ラインから.rtfに保存する?

Terminal.appでzshにより、色つきテキストを生成・表示しています。結果が出たら、コピー・ペーストでTextEdit.appに移し、.rtfで保存していました。そのサンプルを図1に示します;


図1 サンプル

ユーザがアップロードしたファイル


「ABC」がマゼンタ背景の白抜き文字、「.」が黒文字、「xyz」がグリーン背景の白抜き文字。



でも、慣れてくると、コマンド・ラインから直接的に.rtfを生成したくなりました。


方法をご教示くださると幸いです。

iPhone 5s, OS X Yosemite (10.10.5), Mac mini(mid 2011), iMac(late 2009)

投稿日 2016/04/01 19:34

返信
スレッドに付いたマーク ベストな回答

投稿日 2016/04/26 11:59

OSX の RTF には文字化け問題があります、思わぬ事故を起こさないためにもこの手の作業はやめるべきです。


また、化け方は OS のバージョンにより異なり、状況は混沌としてます。下記の記事にはありませんが、Leopard と Snow Leopard でも異なります。Lion 以降のことは知りませんが、危険な香りがします。


WindowsとMacでUnicodeマッピングが違う文字

http://d.hatena.ne.jp/NAOI/20061018/1161168147


Mac OS Xのリッチテキストの扱いに関する問題

http://d.hatena.ne.jp/NAOI/20080221/1203591326


アプリケーション間のコピー&ペーストで化ける文字

http://d.hatena.ne.jp/NAOI/20080222/1203677305


TigerのリッチテキストとLeopardのリッチテキスト

http://d.hatena.ne.jp/NAOI/20080304/1204604432


リッチテキスト関連の文字化けについてのとりあえずのまとめ

http://d.hatena.ne.jp/NAOI/20080319/1205922199

返信: 32

2016/04/12 00:16 mNeji への返信

当面の要点としては、Terminal.appでの色彩決定をすべてweb安全色に統一することです。そこで、3つのスクリプトを準備しました。始めに、それらの動作を示し、その後に、スクリプトを示します。



(1.1 wscListの結果)


昔懐かしの「とほほの色入門・色見本」http://www.tohoho-web.com/wwwcolor.htm の「Webセーフカラー(216色)」を参考にして、配色を作ってみました。その前にTerminalの16色、その後にグレイ・スケール6色を追加しました。Terminalの16色は必ずしも「Webセーフカラー(216色)」でなくとも表示されるようですが、今回はすべて「Webセーフカラー(216色)」で記述しました。


ユーザがアップロードしたファイル

図1.1 wscListの結果




(1.2 wscInfoの結果)



実際の配色を決定するのに図1.1に(rgb)を付けたものを紙に印刷して使っていたのですが、使用しているプリンタの青・緑の近傍は画面に比べて暗い感じの為に、設定に使用できませんでした。


そこで、図1.1の画面で、これはと思った色のWebセーフカラー番号から、6進数の逆計算をして、(rgb)と色のサンプル出力を出せるようにしました。

ユーザがアップロードしたファイル

図1.2 wscInfoの結果




(1.3 wscTerminalColors(黒い色)の結果)


取り敢えず、Terminalの16色を元に、バックグラウンド色・文字色の組み合わせを表示してみました。



なお、操作の便利の為に

#ターミナル色 #wsc 略称:フル・ネーム

0 16 K:Kuro

1 160 R:Red

2 34 G:Green

3 214 Y:Yellow

4 21 B:Blue

5 127 M:Magenta

6 45 C:Cyan

7 145 S:Silver

8 188 s:silver

9 196 r:red

10 46 g:green

11 226 y:yellow

12 39 b:blue

13 201 m:magenta

14 51 c:cyan

15 231 w:white

としました。

ユーザがアップロードしたファイル

図1.3 wscTerminalColors(黒い色)の結果


(1.4 wscTerminalColors(明るい色)の結果)


問題点は

  • • #12の明るい青のバックグラウンドカラーが図1.3と違う。
  • #15と#16のバッククラウン色とが異なる。

これらは、terminfo(5)によって、動的に設定・起動をする必要があるかもしれない。取り敢えずは無視。

ユーザがアップロードしたファイル

図1.4 wscTerminalColors(明るい色)の結果



(2.1 wscListのリスト)


#!/bin/zsh



# USAGE: % wscList↩



show_216c(){

j0=$((16))

echo -n " -----------"

echo " standard colors:(0~7) ----------------------------"

echo -n " 0 "

for (( j=0; j<=7; j++ )) do

printf "\e[1;38;5;15;48;5;%dm W \e[m" $j

printf "\e[1;38;5;0;48;5;%dm B \e[m" $j

echo -n " "

done

echo " 7"

echo -n " -----------"

echo " #High-intensity colors:(8~15) --------------------"

echo -n " 8 "

for (( j=8; j<=15; j++ )) do

printf "\e[1;38;5;15;48;5;%dm W \e[m" $j

printf "\e[1;38;5;0;48;5;%dm B \e[m" $j

echo -n " "

done

echo "15"


for (( z=0; z<=5; z++ )) do

# RED loop

j0=$(( 16+36*z ))

# echo " •j0=$j0, RED=$RED[$j0]"

echo -n " ----------"

printf " #color:(%3d~%3d) -------------------------- -------\n"\

$j0 $((j0+35))

# echo -n " ------ ------- #Color:RED,GREEN,BLUE "

# echo "-----------------------------------------"

for (( y=0; y<=5 ; y++ )); do

# GREEN loop

j1=$(( j0+6*y ))

printf " %3d " $j1

for (( x=0; x<=5 ; x++ )); do

# BLUE loop for Color Samples

j=$(( j1+x ))

printf "\e[1;38;5;15;48;5;%dm W \e[m" $j

printf "\e[1;38;5;0;48;5;%dm B \e[m" $j

echo -n " "

done

printf " %3d\n" $((j1+5))

#set -x

# for (( x=0; x<=5 ; x++ )); do

# # BLUE loop for #web-safe color, BLUE, GREEN

[[ $x -eq 0 ]] && echo -n " "

# j=$(( j1+x ))

# printf "%3d:%.2X%.2X%.2X " $j $RED[$j] $GREEN[$j] $BLUE[$j]

# echo -n " "

# done

# echo

done

done

#gray scale

#echo

echo -n " ---------"

echo " #gray background:(16 59 102 145 188 231)------------"

echo -n " "

for j in $gray_colors ; do

printf "\e[1;38;5;15;48;5;%dm W \e[m" $j

printf "\e[1;38;5;0;48;5;%dm B \e[m" $j

echo -n " "

done

echo

echo -n " "

for j in $gray_colors ; do

printf "\e[1;38;5;51;48;5;%dm Cyan \e[m" $j

echo -n " "

done

echo

echo -n " "

for j in $gray_colors ; do

printf "\e[1;38;5;201;48;5;%dm Magent \e[m" $j

echo -n " "

done

echo

echo -n " "

for j in $gray_colors ; do

printf "\e[1;38;5;226;48;5;%dm Yellow \e[m" $j

echo -n " "

done

echo

}





number_RGB(){

#set -x

n=16

for (( z=0; z<=5; z++ )) do

red=$(( z*51 ))

# echo "red=$red"



for (( y=0; y<=5 ; y++ )); do

green=$(( y*51 ))

for (( x=0; x<=5 ; x++ )); do

blue=$(( x*51 ))

#printf "%3d=(%3d,%3d,%3d) " $n $red $green $blue

RED[$n]=$red

GREEN[$n]=$green

BLUE[$n]=$blue

#printf "%3d=(%X%X%X) " $n $RED[$n] $GREEN[$n] $BLUE[$n]

n=$(( n+1 ))

done

# echo

done

done

}



########################### main ##############################

RED=()

GREEN=()

BLUE=()

#number_RGB



gray_colors=(16 59 102 145 188 231)



show_216c



(2.2 wscInfoのリスト)


#!/bin/zsh



# USAGE: % wscInfo↩

# enter WebSafty-color #(16~231) ? 16 59 102 145 188 231↩ # gray scale

# enter WebSafty-color #(16~231) ? 21 33 39↩ # blue

# enter WebSafty-color #(16~231) ? ↩ # end



wsc2rgb(){

#set -x

#wsc=16+Red*36+Green*6+Blue

wsc=$(($1))

nnn=$((wsc-16))

blue=$((nnn%6))

nn=$((nnn-blue))

green=$(((nn/6)%6))

red=$(((nnn/36)%6))


wscCheck=$((red*36+green*6+blue+16))

blueV=$((blue*51))

greenV=$((green*51))

redV=$((red*51))

}



#====================================================



while true; do

echo -n "enter WebSafty-color #(16~231) ? "

read nmbers

#set -x

[[ $#nmbers -eq 0 ]] && exit

# echo "$nmbers"

numbers=( $(echo $nmbers) )

j=$((0))

# 1 33 0 2 5 0 102 255

echo " # wsc r g b red green blue"

for nm in $numbers; do

[[ $nm -lt 0 || $nm -gt 231 ]] && continue

wsc2rgb $nm

#echo "$nm $red $green $blue $redV $greenV $blueV"

printf " %2d %3d %d %d %d %3d %3d %3d"\

$j $nm $red $green $blue $redV $greenV $blueV

j=$((j+1))

printf " \e[1;38;5;15;48;5;%dm %.3d \e[m" $nm $nm

printf "\e[1;38;5;0;48;5;%dm %.3d \e[m\n" $nm $nm



done

done



(2.3 wsc4TerminalColorsのリスト)


#!/bin/zsh



wsc2rgb(){

#set -x

#wsc=16+Red*36+Green*6+Blue

wsc=$(($1))

nnn=$((wsc-16))

blue=$((nnn%6))

nn=$((nnn-blue))

green=$(((nn/6)%6))

red=$(((nnn/36)%6))


wscCheck=$((red*36+green*6+blue+16))

blueV=$((blue*3))

greenV=$((green*3))

redV=$((red*3))

}



color_Sets(){

# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

cNum=( 16 160 34 214 21 127 45 145 188 196 46 226 39 201 51 231 -1)

shortName=( K R G Y B M C S s r g y b m c w n )

fullName=( Kuro Red Green Yellow Blue Magenta Cyan Silver )

fullName=($fullName silver red green yellow blue magenta cyan white normal)



for (( j=0; j<=16; j++ )) do

k=$((j+1))

wsc2rgb $cNum[$k]

R[$k]=$red

G[$k]=$green

B[$k]=$blue

R3[$k]=$redV

G3[$k]=$greenV

B3[$k]=$blueV

done

}





#========================== main ==========================

#set -x



color_Sets

echo -n "-- #Color --- Name 6base Hex "

echo "Combination of Background and Foreground Colors"

echo -n "#terminal #wsc abb.:full rgb rgb "

echo "Abbreviation of Background|Letter"

echo -n " -- --- --------- --- --- -----------------------------"

echo '------------------------------------'

for (( j=0; j<=16; j++ )) do

k=$((j+1))

if [[ $j -le 15 ]] then

printf " %2d %3d %s:%-8s %1d%1d%1d %1x%1x%1x "\

$j $cNum[$k] $shortName[$k] $fullName[$k] $R[$k] $G[$k] $B[$k]\

$R3[$k] $G3[$k] $B3[$k]

else

printf " %2d ... %s:%-8s ... ... "\

$j $shortName[$k] $fullName[$k]

fi

for (( l=0; l<=15; l++ )) do

m=$((l+1))

if [[ $j -le 15 ]] then

printf "\e[1;38;5;%d;48;5;%dm %s|%s\e[m"\

$l $j $shortName[$k] $shortName[$m]

else

printf "\e[38;5;%dm %s|%s\e[m"\

$l $shortName[$k] $shortName[$m]

fi

[[ $l -eq 15 ]] && printf "\e[48;5;%dm \e[m" $j

done

echo

done

echo -n " -- --- --------- --- --- -----------------------"

echo '------------------------------------------'


以上

2016/04/26 11:58 mNeji への返信

少し時間が経ってしまいましたが、まとめを報告します。


  • •RTFへの出力は止めます。
  • htmlへの出力ウェブ安全色をりようして製作します。


今更なのですが、Wiki記法も含めるようにトライしてみます。ahaのようにswiftで書こうかと思っています。


コメントありがとうございました。

色つきテキストを、コマンド・ラインから.rtfに保存する?

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple ID を使ってご参加ください。