高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technote 1142

Mac OS 8.5

のテクニカルノートは次世代 Mac OS オペレーティング・システム Mac OS 8.5 での変更点と修正点について説明します。このシステムは Mac OS 8.1 の後継となるもので、多くの新しい機能があり、またいくつかの機能が変更されました。
  • いっそうの PowerPC のネイティブコード
  • アピアランスのテーマの切り替え
  • 統合されたコントロールパネル
  • システムの起動時間の短縮
  • アップルスクリプトの実行速度の高速化
  • 新しい Unicode テキストの描画機構
  • 新しい HTML ベースのヘルプシステム

履歴

1.1 初公開

目次


システム条件

Mac OS 8.5 は、PowerPC プロセッサを出荷時に搭載した Macintosh で動作します。最低 16MB、推奨 24MB 以上のメモリが必要です。Mac OS 8.5 日本語版は最低 24MB、推奨 32MB 以上のメモリが必要です。

また標準インストールで、Mac OS X Server の Blue Box にインストールすることもできます。


インストレーション

Mac OS 8.5 のインストーラ

Mac OS 8.5 のインストーラは、Mac OS 8.0 と 8.1 で提供された“Mac OS インストーラ”アプリケーションを改良したものです。新しい“Mac OS インストーラ”は、実際のインストレーションが始まる前にユーザがコンポーネントをカスタマイズすることができ、インストール開始時から完了するまでの間はユーザの介在が不要なため、より快適に使用できるようになりました。

“Mac OS インストーラ”は System 7.0 以降のシステムで動作します。典型的にはユーザはインストレーション CD からブートすることになります。

また、Mac OS 8.0 以降のシステム・フォルダを含んでいる場合のみ、既存のシステムの更新が可能です。それ以前のバージョンのシステム・ソフトウェアを含んでいるドライブやシステムソフトウェアが存在しないドライブの場合は、クリーン・インストレーションとする必要があります。

 

スクリプト作成者のための新しい機能と改良された機能

  • ファイル及びターゲットリスト - リソース・マネージャの制限を回避するため、ファイル・コピー・コマンドを少ない容量で保存する方法
  • Alias Atom - インストレーション中にエイリアスを作成するアトム

デベロッパのための機能

  • 公開 API のうち唯一つの新規のものは、現在のインストーラエンジンのアップルイベントスイートの拡張です。

関連資料


Finder 8.5

Finder 8.5 は Finder 8.1 を改良したもので、ウインドウ内部の描画スピードの向上、ファイル・コピーの高速化、そして、その他のいくつかのユーザ・インターフェース要素の改良と拡張が図られました。特に Finder に追加されたのは、以下の通りです:
  • 壊れたエイリアスを修復する新しいダイアログが追加されました。
  • ユーザはコンテキスト・メニューを使って、任意の Finder オブジェクトに対するエイリアスを“よく使う項目”フォルダに追加することができます。
  • さまざまなフォルダに対する操作で起動する、AppleScript アクションがコンテクスト・メニューにより、任意のフォルダに追加できます。
  • フォルダ操作に対するサウンドが追加されました。
  • Finder のリソース・フォークが読み込み専用となり、Finder の偶発的な破損を多くの場合に防ぐことができるようになりました。
  • システムエラー後に Finder が再起動されたとき、システム安定性に関する注意が表示されないことがありました。表示されるようになりました。
  • アプリケーションの 'BNDL' リソースにファイルタイプとして 'alis' を指定できるようになりました。これは解決不能なエイリアス・ファイルを、“Open Documents”Apple イベント・ハンドラに送ることを指示するものです。
  • Finder 8.5 は、デベロッパが特定のファイルを“使用中”と指定する機構を提供します。“使用中”のファイルは作成途中あるいはコピー途中のファイルのことです。Finder はファイル・タイプがゼロに設定されているか、あるいは 'bzy ''bzy!' ... 'bzy?' の範囲のファイルを“使用中”として扱いそのタイプとクリエータを変更しません。'bzy ''bzy!' ... 'bzy?' という範囲は、デベロッパがファイル作成最中に、ファイル・アイコンのアニメーションを行いたい場合もあることを想定したものです。

    互換性に関する注意
    ファイルのアーカイブを作成する際は、ファイル叉はディレクトリの FInfoFXInfo レコード叉は DInfoDXInfo レコードの内容を、reserved フィールドも含めて、すべて保存して下さい。(但し、デスクトップ情報を含むファイルの inited ビットは例外です。)

    互換性に関する注意
    frFlagsfdFlags はカタログ・レコードの中で同じオフセットにありますが、Mac OS 8.5 からカタログ・レコードがファイルを参照しているときとカタログ・レコードがディレクトリを参照しているときでは、フラグの意味は必ずしも同様ではありません。フラグがファイルに対してのみ定義してあるからと言って、レコードがディレクトリを参照している時に、そのフラグが未使用であるとは思わないで下さい。それぞれのフラグの意味については、Finder.h の中のフラグの説明を読んで下さい。

自動移動機能と拡張された自動移動機能

 

  • Finder は、“システムフォルダ”にドロップされた項目を、自動移動先として Folder Manager に登録されているフォルダに移動する場合、Folder Manager を使うようになりました。
  • Finder 8.5 は、ファイルの Finder フラグの拡張自動移動情報ビット(extended routing info bit)がセットされていて、'rout' = 0 リソースを含むとき、そのファイルを拡張自動移動情報をもつファイルと認識します。拡張自動移動情報を持つファイルは、“システムフォルダ”にドロップされた場合、Finder により 'rout' = 0 で指定されたフォルダに自動的に移動されます。典型的にはリソースは全体で移動情報を一つだけ持ちますが、 'rout' リソースは複数の 20 バイトの項目を持つことができます。拡張自動移動情報を持つファイルが“システムフォルダ”にドロップされた場合、Finderはそれぞれのエントリを調べ、最後に合致したエントリを使用します。'rout' = 0 の項目は以下のように定義されます。
    typedef struct {
      OSType creator;           // ('****' or 0 = wildcard)
                  OSType fileType;          // ('****' or 0 = wildcard)
                  OSType targetFolder;      // 'macs' for the System folder
                  OSType destinationFolder; // the folder to route into
                  OSType reserved;          // not used...should be set to zero
                } RoutingResourceEntry;
  • creator fileType は未使用なので、ゼロに設定して下さい。
  • targetFolder は当該移動レコードに適用される、ドロップの対象となるフォルダです。ファイルがこのタイプのフォルダにドロップされた場合、ファイルは destinationFolder で指定されたフォルダへ自動移動されます。現在、“システムフォルダ”に対してのみこのフィールドがサポートされているので、このフィールドは“システムフォルダ”の FindFolder ID('macs')を指定して下さい。
  • destinationFolder はファイルの移動先となるフォルダの FindFolder ID を持ちます。

Finder がファイルの 'rout' リソースを探す前に、ioFIXFndrInfo.fdXFlags の自動移動情報フラグをオンにして下さい。デベロッパは Finder.hkExtendedFlagHasRoutingInfo マスクを使ってこのフラグにアクセスすることができます。

互換性に関する注意
かつて FinfoDInfoDXInfo にドキュメントしてあったいくつかのフィールドは、システムによってどのように使われているのかを正確に反映しなくなりました。現在正確な定義は、FileInfoFolderInfoExtendedFileInfoExtendedFolderInfo のデータ構造によってそれぞれに提供されます。特にこれらには自動移動情報ビットを見つけるための定義が含まれています。

Finder の新しい表示機能

  • “情報を見る”ウインドウは情報をマルチパネルで表示するようになりました。
  • Finder の設定は単一のマルチパネル・ウインドウに統一されました。
  • “表示オプション”ウインドウは“標準表示を採用”ボタンが追加され、ユーザは現在のウインドウの表示を標準に戻すことができます。
  • リスト表示のカラム幅が変えられるようになりました。
  • 新 Finder はバッジ付きアイコンが表示できます。
  • プロポーショナル・スクロール・バーがサポートされました。
  • ウインドウのタイトルバーに“プロクシ”アイコンが表示されます。
  • 表示フォントとサイズはアピアランス・コントロールパネルで指定できます。
  • Finder がファイルを開けなかった時は標準的なエラーメッセージが表示されますが、ファイルのリソース・フォークに 'STR' ID = -16397 を加えることによって、標準以外のメッセージを表示させることができます。このメッセージは、ユーザがファイルを開こうとしたけれど開けなかった時、ファイルの標準メッセージの替わりに表示されます。
  • ファイルとフォルダにカスタム・バッジを付ける機能が利用できます。詳しくは Icon Services のテクニカルノートをご覧下さい。
  • 前のバージョンの Finder ではカスタムアイコン・フラグがセットされているのにもかかわらず、カスタムアイコンが存在しなかった場合は正しく処理されていませんでした。Finder 8.5 ではカスタムアイコンを持たないファイルはカスタムアイコン・ビットがリセットされ、標準アイコンが使用されます。

    互換性に関する注意
    ディレクトリに置かれる不可視の Icon ファイルは、Finder 8.5 から、アイコン定義以外のリソースを持つことがあるため、リソースを全く含まない場合のみ削除することができます。

  • Finder は“このコンピュータについて”ウインドウで仮想メモリに関する情報が、どのように表示されるかを調べるため、新しい Gestalt セレクタ VMInfoType を使用できるようになりました。Finder の仮想メモリに関する情報を制御したいデベロッパは、表示 1 に示されている値でこのセレクタを再定義することができます。表 1 は、このバージョンの Finder で利用できる仮想メモリ情報表示モードを説明しています。

    表 1 VMInfoType セレクタで決定される仮想メモリ表示モード

    セレクタ名称
    表示される仮想メモリ情報
    gestaltVMInfoSizeStorageType
    0
    仮想メモリの「入」叉は「切」、バッキング・ストアのサイズとバッキング・ストアが位置するボリュームの表示(標準)
    gestaltVMInfoSizeType
    1
    仮想メモリ「入」叉は「切」、バッキング・ストアのサイズの表示(標準)
    gestaltVMSimpleType
    2
    仮想メモリ「入」叉は「切」の表示(標準)
    gestaltVMNoneType
    3
    仮想メモリが「入」の場合も含め、仮想メモリ情報を表示しない。

インターネット・ロケーションとクリッピング・ファイル

  • Finder 8.5 ではテキスト・クリッピングの名称を指定する方法が拡張されています。テキスト・クリッピングの名称はドラッグされたテキストの最初の数文字(と適切であれば“...”文字)で生成されます。前のバージョンの Finder では、“テキストクリッピング”、“テキストクリッピング 1”などの名称が使われていました。例えば、この行のクリッピングは Finder 8.5 で“例えば、この行...クリッピング”となります。(訳注:原文は“例えば、この行のクリッピングは...”と始まっていて、この先頭の数文字から生成すると“例えば、この行...”となります。)
    この機能は Mac OS 8.0 で導入されたクリッピング名称の設定方法を拡張します。(Mac OS 8.0 のクリッピング名称の設定方法についてはテクニカルノート TN1102 “Mac OS 8”の“ファイル名のクリッピングを制御する”をご覧下さい。)
  • Finder はドラッグデータを受け取るとインターネット・ロケーション叉はクリッピングファイルを作成します。実際に作成されるファイルの種別はドラッグフレーバや内容に左右されます。詳しくは以下の説明をご覧下さい。
  • クリッピングのファイルタイプは Universal Interfaces に追加されています。表 2 は Finder が生成するクリッピングのファイルタイプの一覧です。

    表 2 Finder が作成するクリッピングのファイルタイプの一覧。Finder が作成するクリッピングのクリエータタイプは常に kClippingCreator('drag')です。

    定数名
    OSType
    説明
    kClippingPictureType 'clpp' QuickDraw ピクチャ
    kClippingTextType 'clpt' ASCII テキスト
    kClippingSoundType 'clps' 'snd ' 形式のサウンドリソース
    kClippingUnknownType 'clpu' 不明データ

  • URL を Finder にドラッグすると、Finder はインターネット・ロケーション・ファイルを作成します。Finder は次の方法でURLを認識します。(1)ドラッグデータに 'url ' フレーバが含まれているものはインターネットの URL として扱われます。(2)ドラッグデータに 'TEXT' フレーバが含まれている場合、Finder はテキストデータを解読して、URL かどうかを判断します。URL だと判断した場合は、以下のファイルタイプに応じて、インターネット・ローケション・ファイルを作成します。

    表 3 Finder が作成するインターネット・ロケーションのファイルタイプの一覧。Finder が生成するインターネット・ロケーションのクリエータ・タイプは常にkInternetLocationCreator'drag')です。

    定数名
    OSType
    説明
    kInternetLocationHTTP 'ilht' http アドレス
    kInternetLocationFTP 'ilft' ftp アドレス
    kInternetLocationFile 'ilfi' ディスク上のファイル
    kInternetLocationMail 'ilma' e-mail アドレス
    kInternetLocationNNTP 'ilnw' ニュースグループまたは記事
    kInternetLocationAFP 'ilaf' Apple Filing Protocol アドレス
    kInternetLocationAppleTalk 'ilat' AppleTalk アドレス
    kInternetLocationGeneric 'ilge' その他のリソース

    互換性に関する注意
    インターネット・ロケーションとクリッピング・ファイルのファイル形式に関するドキュメントはなく、断りなく変更する可能性があります。

AppleScriptサポート

 

  • Finder 8.5 では以下の AppleScript がサポートされます。
    • 新しい機能に対する用語が追加されました。
    • 表示オプションに対する用語が置き換えられました。
    • 任意のファイルやフォルダ情報の取得と変更
    • ウインドウとアイコンのオープン、クローズ、位置変更
    • 動作プロセスの取得
    • ファイル共用権限の取得と変更
    • ファイルをゴミ箱へ移動
    • ディスクの取り出し
    • コンピュータの再起動と終了
    • フォルダの作成とエイリアスの作成
  • 以下のフォルダアクションをサポートします(フォルダアクションはコンテクストメニューを使ってフォルダに付けられます)。
    • フォルダアクションの追加と削除
    • フォルダアクション・リストの取得
    • フォルダのオープン、クローズ、ファイルの追加、ファイルの削除、ウインドウの移動、ウインドウの大きさの変更があった時にフォルダアクションのハンドラが実行されます。

    関連資料


Apple ヘルプ

Apple ヘルプは、Mac OS ユーザ・インタフェースのすべての点に関する操作支援説明をシステムワイドで提供します。Apple ヘルプの技術は、主に 2 つの技術、“Apple ガイド”と“ヘルプビューア”からなります。

Apple ガイド 2.3

Mac OS 8.5 では、Apple ガイドはユーザが作業をする時に必要な一連のコマンドを示します。Apple ガイド 2.3では以下の機能が提供されます。

  • AppleScript から名称を指定して、特定の Apple ガイド・シーケンスを呼ぶ
  • Apple ガイド 2.3 は、以前のバージョンで作られたガイド・ファイルでも動作するよう下位互換性があります。
  • Apple ガイド 2.3 はヘルプビューアと統合されています。

ヘルプビューア 1.0

ヘルプビューアはユーザが簡便にオンライン・ヘルプの内容を見るための軽量 HTML レンダリングアプリケーションです。ヘルプビューアは以下の機能を提供します。

  • ユーザの問い合わせを処理するため Apple Information Access Toolkit(AIAT)を使用します。動的に HTML ページが生成され、結果が表示されます。
  • AppleScript からヘルプの任意のトピックスや文字列を検索でき、結果を表示できます。
  • URL リンクを使って AppleScript を実行できます。
  • URL リンクを使って Apple ガイド・シーケンスを呼ぶことができます。

関連資料


システム・ファイル

システム・ファイルには Macintosh の基本動作に必要なリソースが含まれています。ここではシステム・ファイルに組み込まれた新しい機能や変更点を説明します。以下の項目は、Mac OS 8.5 ではシステムに組み込まれているため、コンピュータ起動時に“shift”キーを押した場合でも存在します。

 

一般事項

  • Mac OS 8.5では、VMがオフの場合でも68Kプロセッサのエミュレーション時にはユーザ・モードで動作し、全ての68K割り込みコードはスーパーバイザ・モードで動作します。その結果、全ての68K割り込みコードはユーザ・スタック・ポインタ(非インタラプトコードに使われるスタック)ではなく割り込みスタック・ポインタを使用します。この変更により割り込み処理の最中に、アプリケーション・スタックがアプリケーションのヒープ・ゾーンに食い込んでしまう危険性が少なくなります。

    警告:
    仮想メモリがオフの場合でも、デベロッパは仮想68Kプロセッサがスーパーバイザ・モードで動作していると仮定しないで下さい。

  • スーパーバイザ・モードの680x0命令にアクセスする必要のあるデベロッパは_EnterSupervisorModeトラップを使ってプロセッサ・モードをスイッチすることができます。リスト1のアセンブラ・コードに_EnterSupervisorModeトラップを呼んで、スーパーバイザ・モードに入る正しい方法を示しています。ここでは、_EnterSupervisorMode(セレクタ 8)が利用できるかどうか決定するため、DebuggerGetMaxの結果を調べています。もし利用できる場合_EnterSupervisorModeを呼びます。

     

    リスト1 680x0プロセッサを確実にスーパーバイザ・モードで動作させる正しい方法

     ; Is _DebugUtil available?
     ; Code running on a IIci or later can skip this step.
         move.w  #_Unimplemented,d0
         _GetToolTrapAddress
         move.l  a0,-(sp)
         move.l  #$A08D,d0         ; get _DebugUtil
         _GetToolTrapAddress
         cmpa.l  (sp)+,a0          ; was this previously
                                   ; unimplemented?
         beq.s   @noEnterSupervisorMode
         
     ; Is the _EnterSupervisorMode selector available?
         _DebuggerGetMax           ; check how many _DebugUtil
                                   ; selectors are implemented
         cmpi.l  #8,d0             ; is selector 8 available?
         blt.s   @noEnterSupervisorMode  ; EnterSupervisorMode isn't
                                  ; available
         
         _EnterSupervisorMode     ; switch to supervisor mode
                                  ; (switches stacks)
         move.w  d0,-(sp)         ; and save the previous SR contents
                                  ; on the stack
         bra.s   @inSupervisorMode
         
     ; If _EnterSupervisorMode wasn't available, then put
     ; sr on the stack
     @noEnterSupervisorMode
         move    sr,-(sp)         ; save the current SR
         
     @inSupervisorMode
         
     ; ...
     ; do stuff in supervisor mode
     ; remember that the stack has been swapped if we switched
     ; from user mode to supervisor mode.
     ; ...
         
         move    (sp)+,sr         ; restore the SR
互換性に関する注意
DebuggerGetMaxは、Mac OS 8.5が動作する全てのシステムで利用できます。その他のシステムでは、DebuggerGetMaxを呼ぶ前に_DebugUtilトラップがあるかどうで、その存在を調べる必要があります。VMが存在するかどうかで_EnterSupervisorModeを使うべきだどうか決定するのは、間違ったプログラム法だと考えています。デベロッパは上記の方法を使用して下さい。
  • 様々なマネージャ、特に Font Manager は、プロセス単位でもシステム全体としても大幅にメモリに対する要求が減りました。
  • いくつかのマネージャが完全なPowerPCコードになりました。
  • 不正なシャットダウンが起こったことをユーザに知らせるダイアログが設計し直されました。Disk First Aidを起動するオプションが追加され、また2分でタイムアウトするようになりました。

    関連資料

 

Alias Manager

Alias Manager はオペレーティング・システムの一部で、File Manager と交信して、ファイルあるいはディレクトリの所在を保存するエイリアス・レコードを管理します。Alias Manager 自身はFinderエイリアス・ファイルを生成せず、Finderが Alias Manager が作ったエイリアス・レコードを取り込んでエイリアス・ファイルを作ります。
  • Alias Manager の検索法が拡張され、マウントされているボリュームに存在する単純な場合の検索が失敗しても、存在するファイルへの絶対パスがエイリアス・レコードに保存している場合も検索します。この場合、Alias Manager は絶対パスを使用して見つかったファイルへの参照(reference)を返します。
  • Alias Manager が拡張されて以下の新しいルーチンが提供されました。

 

IsAliasFile

          OSErr IsAliasFile (const FSSpec *fileFSSpec,
                            Boolean *aliasFileFlag,
                            Boolean *folderFlag);
fileFSSpecはファイルを参照するファイル・スペック・レコード(file specification record)へのポインタです。

aliasFileFlagは、ファイルがFinderによって作られたエイリアス・ファイルの場合にtrueにセットされる、ブール変数へのポインタです。

folderFlagは、エイリアスがフォルダを参照している場合にtrueにセットされる、ブール変数へのポインタです。

IsAliasFile関数はfileFSSpecで指定されるファイルがFinderで作成されたエイリアス・ファイルの場合、*aliasFileFlagをtrueにセットします。

 

ResolveAliasWithMountFlags

          OSErr ResolveAliasWithMountFlags (const FSSpec *fromFile,
                            AliasHandle alias,
                            FSSpec *target,
                            Boolean *wasChanged,
                            unsigned long mountFlags);
fromFile、nullでない場合、相対エイリアスを解決するために使用します。

aliasは解決するAliasHandleです。

targetは、関数が正常に終了した場合にエイリアスによって参照されるファイルあるいはディレクトリを示すFSSpecへのポインタです。

wasChangedは、ResolveAliasWithMountFlagsによりエイリアス・レコードが変更された場合にtrueに設定される、ブール変数を示します。

mountFlagsをkResolveAliasFileNoUIに設定するとエイリアスを解決している最中にディスク・スイッチ・アラートに代表されるユーザの介在を防ぐことができます。

ResolveAliasWithMountFlagsルーチンは、呼び出し元がディスク・スイッチ・アラートを抑止するmountFlagsを除き、ResolveAliasと等価です。

 

ResolveAliasFileWithMountFlags

          OSErr ResolveAliasFileWithMountFlags (FSSpec *theSpec,
                            Boolean resolveAliasChains,
                            Boolean *targetIsFolder,
                            Boolean *wasAliased,
                            unsigned long mountFlags);
入力時、theSpecはエイリアス・ファイルを参照するFSSpecを示します。関数が正常に完了した後、theSpecはエイリアス・ファイルが参照するファイルあるいはディレクトリを示します。

resolveAliasChainsは、エイリアス・ファイルのチェーンをオン/オフします(例えば、エイリアス・ファイルがエイリアス・ファイルを指し、そのエイリアスが最後のターゲット・ファイルを指す)。

targetIsFolderはエイリアス・ファイルが示すターゲットがフォルダであった場合trueとなる、ブール変数をポイントします。

wasAliasedはtheSpecがエイリアス・ファイルを示す場合、trueを返します。

mountFlagsをkResolveAliasFileNoUIに設定すると、エイリアスを解決している最中にディスク・スイッチ・アラートを代表とするユーザの介在を防ぐことができます。

ResolveAliasFileWithMountFlagsルーチンは呼び出し元がディスク・スイッチ・アラートを抑止するmountFlagsを除き、ResolveAliasFileと等価です。

互換性に関する注意
IsAliasFile,ResolveAliasWithMountFlags,あるいはResolveAliasFileWithMountFlagsを使用する前に、デベロッパは、それらが利用できるかどうか Alias Manager のゲシュタルトgestaltAliasMgrResolveAliasFileWithMountOptionsビットにより調べる必要があります。また、新しいInterfaceLibのリンクに関する重要な情報がありますので、InterfaceLibセクションを参照して下さい。

  • NewAliasMinimalとNewAliasルーチンは、nameフィールドの長さが63バイト以上の不正なFSSpecレコードがパラメータとして渡された場合、ヒープを破壊していました。不正なFSSpecが渡された時、paramErrが返されるようになりました。

    関連資料

 

Appearance Manager 1.1

Appearance Manager によりグラフカル・ユーザ・インターフェースの様々な要素の見栄えをユーザが構成できるようになります。Appearance Manager には下のような新しい機能が含まれます。
  • 見栄えの切り替え
  • データ駆動のテーマ
  • 多くの新しいブラシとテキストの色
  • インターフェース要素のほとんどに対するブラシと基本操作によるドロー
  • テーマがカラーを使用してドローしているかパターンを使用してドローしているか関わらずにGrafPortの状態を保存し回復する機能
  • 数種類の異なった形態のスクロールバーとチェックボックス
  • アピアランスとフォントの変化はアップル・イベントにより通知されます。イベントはクラスとしてはkAppearanceEventClassを使用し、IDとしては表4に挙げられるものが使われます。イベントにはパラメータはなく、RegisterAppearanceClientを呼んで Appearance Manager のクライアントとして登録されたプロセスにのみ送られます。表4は Appearance Manager のクライアントに送られる新しいアップルイベントです。

     

    表4 アピアランスのフォントの変化のアップルイベント。これらのイベントはアップルイベントクラス AppearanceEventClass'appr')を使用します。

    定数名
    OSType
    説明
    kAEAppearanceChanged
    'thme'
    テーマが変更された
    kAESystemFontChanged
    'sysf'
    システムフォント(大)が変更された
    kAESmallSystemFontChanged
    'ssfn'
    システムフォント(小)が変更された
    kAEViewsFontChanged
    'vfnt'
    表示用フォントが変更された

  • アニメーション・カーソル機能の提供
  • ユーザのさまざまな操作にサウンドをつける機能の提供
  • 新しいアピアランス・フォルダがシステム・フォルダに新規に追加されました。アピアランス・フォルダはアピアランスに関連するファイルを共通に保存する場所で、またテーマ・ファイル、サウンド・セット、そしてディスクトップ・ピクチャ用の場所です。テーマ・ファイルがシステム・フォルダにドロップされた場合、適切な場所に自動的に移動されます。表5にMac OS 8.5で新しく導入されたアピアランス・フォルダを示します。

 

表 5 アピアランスの新しいフォルダとその FindFolder セレクタ

フォルダ名
OSType
説明
アピアランス
'appr'
アピアランスに関する素材
テーマファイル
'thme'
テーマファイルの保存先
サウンドセット
'snds'
サウンドセットの保存先
デスクトップピクチャ
'dtp'
デスクトップピクチャの保存先。'JPEG' 形式のファイルが“システムフォルダ”にドロップされると、このフォルダに自動移動されます。

 

ATSUI(Apple Type Service for Unicode Imaging)

Unicode標準は、今日世界で使用されている全ての文字のエンコードを目指した、新しい文字集合のエンコード法です。ATSUIはQuickDraw APIを拡張したもので、Mac OSアプリケーションでUnicodeテキストを描画できます。ATSUIでは、16ビットUnicodeの描画に関する低レベルのサービスとともに、以前にQuickDraw GXでサポートされていた高位の印刷制御機能(typographical control)の多くを提供しています。
  • 16ビットUnicode(UTF-16)のテキスト・イメージング機能(text imaging services)を提供します。
  • ATSUIはUnicode Standard,Version2.1に完全に従っています。
  • ATSUIはUnicodeの双方向順序づけ(bidirectional ordering)を含む双方向アルゴリズム(bidirectional algorithm)を完全に提供しています。
  • ATSUIのテキスト描画はQuickDraw専用アプリケーションと完全に統合しています(QuickDraw GXと異なり、この機能を使っての全てのテキストの描画に関して、非QuickDraw APIは必要ありません)。
  • Unicode 'cmap'を持たないフィントに対して、ATSUIは実行中に自動的にそれを生成します。フォント・ファイルは変更されませんが、変換に際しては、キャラクタ・エンコードに関するいくつかの仮定をおいています。最良の結果を得るために、日本語フォントはUnicode'cmap'を持つことを奨めます。

    関連資料 :

 

Code Fragment Manager

Code Fragment Manager(CFM)の任務は、PowerPCコンピュータにおいて実行可能なPowerPCの命令の列を取り出すことです。PowerPC Mac OSとPowerPCアプリケーションのほとんどは何らかの形でCMFが提供する機能に依存し、利用しています。
  • Code Fragment Manager はシステム起動時にResolveAliasFileを呼んでいたため、描画環境が確立する前に'Please Insert The Disk"アラートを表示しようとする場合がありました。CFMはResolveAliasWithMoutFlags関数を呼ぶようになり、ディスク交換アラートを抑止しため、この問題は起こらなくなりました。
  • Mac OS 8.1において Virtual Memory Manager のファイル・マッピング・コードは、近い将来に使われる可能性がなかったり、あるいは全く使われないファイルの大きなチャンク(一部分)をメモリにマップして常駐させました。Mac OS 8.5ではこの機能が Code Fragment Manager に移動しました。アプリケーションの起動の性能に関しては、ほとんどの場合には同様です。しかしながら、コード・フラグメントを複数持つファイル(例えば、ファットCFM 68K/PowerPCアプリケーション)に関しては、今回の調整で利益が得られると思います。
  • CFMに、シェアド・ライブラリ(shared library)を探すための特殊なフォルダをアプリケーションが指定できるオプションがつきました。'cfrg'リソースの一つのフィールドで'alis'リソースのIDを指定することができます。これがゼロでない場合、そのリソースがappファイルから読み込まれ、解釈されます。意図としては、これがアプリケーション・フォルダのサブフォルダ(例えばplug-insの保存場所)への相対的エイリアスです。Code Fragment Manager は、新しい Alias Manager のルーチンResolveAliasWithMountFlagsを呼んで'cfrg'リソースで参照されるエイリアスを解決するようになり、ライブラリをロードする時のユーザの介在の必要がなくなりました。
  • アプリケーション・サポートフォルダがCFMのサーチ・パスの一部になりました。
  • CFMの'cfrg'リソースに新しいビットが定義され、フラグメントのコードを強制的にアプリケーション・ヒープへロードできるようになりました。

    関連資料

 

Control Manager

Control Manager は、スクリーンの描画されたコントロールを使ったユーザとのやり取りに関わる、描画と処理を行う機能を提供しています。Control Manager の新しい機能としては以下が含まれます:

 

  • Control Manager が PowerPC ネイティヴになりました。
  • インライン入力をサポートする新しい編集可能テキスト(Edit Text)が提供されました。
  • 編集可能テキストにロック機能(ユーザの入力を抑止する)が提供されました。
  • 静的テキスト・コントロール(Static Text Control)にテキスト切り捨て(Text Truncation)が提供されました。
  • アイコン・コントロール(Icon Control)のアイコンが動的に変化させることができるようになりました。
  • チェック・ボックス(Check Box)とラジオ・ボタン(Radio Button)に自動トグル機能が提供されました。
  • プロポーショナル・スクロール(Proportional Scrolling)が利用できるようになりました。
  • 32ビット・コントロール値のサポートが追加されました。
  • コントロール(プロパティー)にタグデータを関連付ける機能が追加されました。
  • スクロール可能なテキストボックスのコントロール(Scrolling Text Box Control)(リードオンリーテキスト)のサポートが追加されました。
  • コントロール・リージョン(Control Region)APIが追加されました。
  • コントロール・バリデーション(Control Validation)APIが追加されました。
  • Control Manager がControlHandleの全てのパラメータを検証し、不正な場合はエラーを返す様になりました。
  • コントロールで使われるフォントは、標準システムフォントとその変形として指定できるようになりました。
  • クロック・コントロール(Clock Control)がより多くのパートコードを返すようになりなした。
  • 編集可能コントロール(Edit Text Cotnrol)検証用コールバック・プロセジャ(Validation Callback Procedure)をサポートしました。

    関連資料

 

Device Manager

Device Manager はアプリケーションと、特定のデバイスと交信するように設計されたコード(実際にはデバイスを操作しない"デバイスドライバ"もありますが)が、通信し合うためのの標準的なインターフェースを提供しています。
  • デベロッパが返すことができる3つの新しいDriverGestaltセレクタ、特にカラーアイコンに関するものが提供されました。

    Table 6. New DriverGestalt selectors introduced in Mac OS 8.5.
    セレクタ名称
    Value
    返される情報
    kdgPhysDriveIconSuite
    'dics'
    IconFamily('icon')データ構造体へのポインタでdriverGestaltResponse中でディスク・ドライバ(Desk Driver)の物理ドライブ(以前はcdCode 22であった)を表現するために使用されます
    kdgMediaIconSuite
    'mics'
    IconFamily('icon')データ構造体へのポインタでdriverGestaltResponse中でディスク・ドライバ(Desk Driver)のメディア(以前はcdCode 21であった)を表現するために使用されます
    kdgMediaName
    'mnam'
    Pascal文字列へのポインタでdriverGestaltResponse中でディスク・ドライバ(Desk Driver)名を表すために使用されます。

    関連資料

 

Dialog Manager

Dialog Manager はダイアログ・ウインドウによりユーザとのやり取りを管理するためのオートマチックなユーザ・インターフェース(automated user interface)機能を提供します。Dialog Manager には以下の機能が新しく加わりました。

 

Display Manager

Display Manager は、コンピュータに接続されたモニターの表示と配置の設定を行うソフトウェアです。
  • いくつかのディスプレイ・カードにおいて、非プレセット解像度(non-preset resolution)とマークされてる解像度に対して、モニタ&サウンド(Monitors & Sound)コントロールパネルが本来推奨リストとして見せるべきるはずのものが現れませんでした。さて、モニタ&サウンド・コントロールパネルは非プレセットビットをチェックしていましたが、その時には Display Manager はそれをチェックしていませんでした。Display Manager は低いタイミングを切り捨てモニタ&サウンドは高位の(プリセットではない)タイミングを切り捨て、それでどちらも”推奨”リストを作るためのタイミングリストに現れませんでした。Display Manager は正しく非プリセットビットをチェックし、推奨リストが正しく作られるようになりました。
  • Display Manager が返す名称の最後にゴミの文字がつく場合がありました。修正された。
  • マルチスキャン・モニタが、PowerBookに装着されたときクラッシュするという Display Manager とモニタ&サウンドの問題が修正されました。この問題が発生したのは、モニタ&サウンドが開いたままでPowerBookがスリープし、そしてスリープしている間にディスプレイが切り離され、その後PowerBookが目覚める場合でした。
  • スマート・ディスプレイ(Smart Display)が内蔵のモニタ・コネクタに接続されている時、いくつかの機種で起動時にディスプレイ・イネーブラ(Display Enabler)がロードされないという問題が修正されました。

    関連資料

 

Disk Initialization Package

Disk Initialization Package はディスクに対するフォーマット機能を提供します。
  • DILoadは、外部ファイル・システム(Foreign File System)のリソースを現在のヒープゾーン(通常現在のアプリケーション・ヒープ)にロードしていて、アプリケーションがリソースをアンロードせずに終了した場合にクラッシュする状況を発生させていました。これらのリソースをシステム・ヒープにロードされるようにしました。
  • 不良ブロック・スペア機能(Bad Block Sparing)を持つ File System Manager のファイル・システムで、ディスクドライバの検証要求(Verify Request)が失敗したとき、不良ブロック・スペア機能が呼ばれます。この機能はMac OS 8.0とMac OS 8.1では使用できなかったものです。
  • ディスク初期化ダイアログの”フォーマット”ポップアップメニューの初期値としで現在のディスクのフォーマットを示すようになりました。

    関連資料

 

Drag Manager

Drag Manager は、ユーザがアプリケーションやシステム間で“ドラッグ & ドロップ”コマンドを実行するための標準的な情報交換機能とユーザ・インタフェース機能を提供するものです。Drag Manager は新しい機能としては以下があります。
  • ドラッグ時のハイライト色はテーマで定められている色が使われます。
  • 半透明のドラッグはクラッシュすることがありましたが、この問題は解決されました。以前の Drag Manager では、SetDragImage が未ロックのハンドルを誤って使用していました。

    関連資料

    • テクニカルノート TN1043“On Drag Manager Additions(Release 1.1)”
    • テクニカルノート TN1085“Drag Manager を使ったファイルシステムエンティティの操作”
    • テクニカルQ&A TB28“Drag Manager と windowKind 20”
    • Drag Manager SDK

 

DriverServicesLib

DriverServicesLibは、ネイティブなドライバ・コードに対するユーティリティ・ルーチンを提供しています。DriverServiceLibの仮想メモリ支援機能に対し、以下の改良が加えられました。
  • PrepareMemoryForIOはIOPreparationOptionが、kIOIsOutputでKIOIsInputでない場合、LockMemoryのかわりにLockMemoryForOututを使用するようになりました。
  • Mac OS 8.5よりGetPageInformationは、kPageIsLockedResident (kPageIsLocked)PageStateInformationビットを正しく返すようになりました。仮想メモリがオンの場合、kPageIsLockedResidentは、ページがLockMemoryあるいはLockMemoryForOutputでロックされたことを示しています。Mac OS 8.5以前ではkPageIsInMemory(kPageIsResident)PageStateInformationビットがセットされている常駐ページ(Resident page)は、にkPageIsLockedResidentも同様にセットされていました−実際にはページがロックされていない場合についてもセットされていました。
  • Mac OS 8.5より、GetPageInformationは、新しいPageStateInformationビット: kPageIsHeldResidentを返します。仮想メモリがオンの場合、kPageIsHeldResidentはページが HoldMemory, LockMemoryあるいはLockMemoryForOutputにより物理メモリに保持されていて(しかしロックする必要はない)ことを示します。

    関連資料

 

Event Manager

Event Manager は、アプリケーションへのイベントの伝達を管理します。Event Manager に関する変更事項には、以下が含まれます。

  • Event Manager の一部がPowerPCネーティブになりました。
  • 以前には、イベントキューは20イベントに制限されたいて、そのため早いタイピングが行われた場合、キーストロークを失うことがありました。イベントキューの大きさが48に拡大されました。

    関連資料

 

File Manager

File Manager はディスクによる情報の蓄積と読み出しを行う機能を提供するものです。File Manager の新しい機能には以下のものが含まれます:
  • PBXGetVolInfoは、FSMベースのファイル・システムに対して呼ばれる場合、ioVRefNumとしてワーキング・ディレクトリid(working directory id)またはボリューム・ナンバ ゼロ(デフォルトディレクトリ)が指定されたときioVNmFlsに間違った値を返していました。File System Manager のセクションで説明されているように、この問題は修正され、File Manager は、変換された実際のボリューム参照番号(volume reference number)ではなく、ワーキング・ディレクトリidあるいはゼロをFSMベースのファイル・システムに渡します。
  • PowerBookのいくつかのモデルでコントロール・ストリップ・モジュール(control strip module)からハードディスクをスピンダウンするよう指示されても、スピンダウンしない状況がありました。この問題が修正されました。
  • UnmountVolは、サーバにマウントされたボリュームに対して呼ばれた場合、fBsyErr(ファイルビジー)を返すことがたびたびありました。このとき、File Manager はワーキング・ディレクトリをオープンしたままにしていました。この問題点が修正されました。
  • ioPosModeフィールドのpleaseCacheBit(ビット4)は、ディスク・キャッシュ(disk cache)がサポートするようになりました。HFS/HFS+ボリュームへのRead/Write要求の際にioPosModeのpleaseCacheBitをセットすることで、大きなブロックのデータのキャッシングを要求することができるようになりました。File System Manager のクライアントもまた、このビットをUTCacheReadIP, UTCacheWriteIP,UTVolCacheReadIP,とUTVolCacheWriteIP要求のcacheOptionsパラメータへセットできるようになりました。このビットをセットすることで要求がキャッシュされることが保証されるわけではありませんが、キャッシュされる可能性は大きくなります。
  • PBGetFPosがioPosModeの16ビット全てをクリアするようになりました。
  • PBAllocateとPBAllocContigが実行中にエラーが発生しても、制御を戻すまえにioActCountを設定するように変更されました。
  • ディスク・キャッシュの最小サイズが128Kになりました。
  • UnicodeベースのAPIを使用しているときに、ファイル名の中にコロンが許されるようになりました。以前にはコロンはそのまま返され、Pascal文字列ベースのAPIで、そのようなファイルにアクセスできなくなっていました。今回、コロンが(その他の表現不能文字列-non-representable charactersと同じように)クェッションマークに変換され、またFileIDがその名前に挿入されます。
  • HFS Plusフォーマットのボリュームに対してPBCatMoveをよびだすと、必要以上の大きさのカタログ・ファイル・スレッド・レコード(catalog file thread records)を生成し無駄なスペースを発生させていました。この問題が修正され、PBCatMoveでカタログ・ファイルに無駄なスペースを発生しなくなりました。
  • HFSボリュームを検索しているときPBGetCatSearchSyncが矛盾する結果を返す問題を修正しました。
  • HFS+コードがボリューム・ヘッダ情報(Volume Header information)を保存する際に、属性フィールドの符号拡張を行い、ソフトウェア・ロック・ビット(ビット15)がセットされている場合、上位ビット全てをセットしていました。この符号拡張を止めました。
  • PBCatSearchを変更して、前のシステムほどcatChangedErrを返さなくなりました。
  • CInfoPBRecのdirectory IDフィールドにfile IDを設定してPBGetCatInfoを呼んだ場合、正しくdirNFErrを返すようになりました。Mac OS 8.1ではこの場合、あたかもファイルがディレクトリであるかのような不正な情報を生成していました。8.1以前では、これはfnfErrを返していました。
  • 新しいコールPBHTrashVolumeCachesが加わり、ボリュームをフラッシュ(flush)して File Manager とDisk Cacheでボリュームのキャッシュを無効(invalidate)します。ボリュームがこのコールをサポートする場合、GetVolParamsにより返されるvMAttribフィールドのビット2がセットされます。
  • Mac OS Extendedボリュームでは全ての日付がUTCで保存されます。Mac OS 8.1では、この時間は現在のタイムゾーンと夏時間の設定にしたがい、ローカル時間との間で相互に変換されていましたが、この方式により夏時間設定の変更を行うと日付が1時間変わっているように見えました。Mac OS 8.5では、変換された日付に対して有効な夏時間設定を使って、日付を変換します。
  • Mac OS 8.1において、Mac OS 標準形式のボリュームあるいはMac OS 拡張形式のボリュームが極端に断片化(Fragmented)して、かつエキステントB-treeがエキステント(extend)の最大数以上の成長が必要となったとき、File Manager はボリューム・ビットマップ(volume bit map)に余分なビットをセットしたまま-127エラーを返していました(Disk First Aidは、この際にボリューム・ビット・マップの軽い問題点と報告していた)。File Manager はこのような状況でdskFulErrを返し、余分なビットをボリューム・ビットマップに残さないように改善されました。
  • MacsBugでログを保存中にクラッシュする問題が修正されました。この時 File Manager はアドレズ0にジャンプしていました。
  • ボリュームをマウントしたりアンマウントしたときに、File Manager はいくつかのキャッシュを適切に無効(invalidating)にしませんでした。もっとも良く見られた症状は、一連のフロッピやディスクイメージ(disk images)のマウント/アンマウントを繰り返したとき(例えばフロッピからソフトウェアをインストールする場合など)、あるいは空白か解読不能(ゴミ)の名前を要求するディスク交換ダイアログが表示されたときに、Finderウインドウのなかのアイテムがなくなってしまうことでした。File Manager は、ボリュームがアンマウントされた時に、キャッシュの無効化処理を正しくおこなうようになりました。
  • CD-ROMをマウントする際に発生した問題が修正されました。これは、CD-ROMをマウントすると、ボリュームを修理する必要があるというダイアログが表示され、クラッシュ後、ある条件ではマウントされた書き込み可能ボリュームが破損することもありました。
  • PBAllocContigが利用可能な連続空間以上の空間を要求したとき、正しくエラーを返しながら、要求より小さなスペースを割り当てていました。PBAllocContigが修正され、このような場合にはスペースを割り当てないようにしました。
  • File Manager は、リソース・フォークがクローズされた毎に、その第1セクターに書き込まなくなりました。以前は、リソース・フォークの第1セクターには112バイトのMFSディレクトリ・エントリのコピーが含まれていて、これは古いバージョンのMac OSでのFinderとディスク修復ユーティリティに使われることを想定したものでした。現在、この情報を見ているディスク修復ユーティリティはなく、またFinderも同様に見ていません。この余分なread/writeサイクルがなくなったため、Finderがリソースファイルを含むファイルをコピーする速度が速くなりました。
  • Mac OS標準ボリュームからブートする際に発生した問題が修正されました。これは、Mac OS拡張ボリューム(extended volume)にあるシャアド・ライブラリ・ファイルを参照するエイリアスが、拡張フォルダ(extension folder)にある時、システムがリブートされると、エイリアスが変更した、毎回エイリアスの解決が失敗していました。Mac OS 8.5ではそのようなエイリアスは正しく解決されます。
  • Mac OS拡張ボリューム(Mac OS extended volume)のファイルを削除しようとするとき、PBDeleteが-127を返し、ボリューム・ビット・マップを破壊した問題が修正されました。この問題は、ファイル名が最初に不正なテキスト・エンコーディングによりUnicodeに変換された場合に発生していました(例えば、アプリケーションがランゲッジ・キットがインストールしていない状態で日本語ファイル名を使ったファイルを生成し、後にランゲッジ・キットをインストールしてファイルを削除する時などです)。
  • 割込みが部分的に禁止されている間に、外部ファイルシステムが非同期で呼び出されることがあった問題を修正しました。これは稀にしか起きませんでしたが、いったん発生すると、Open Transport を使ってファイル・サーバと通信している AppleShare のような外部ファイルシステムで問題が発生しました。現在すべての外部ファイルシステムへの非同期呼び出しはdeferred taskまたはsystem taskの中から起動され、割り込みは完全に機能します。

    注意:
    HFSファイルサイズの最大値である2ギガバイトに近いファイルをHFSフォーマットのボリュームにコピーしようとするとき、宛先のボリュームでのアロケーションブロックサイズが大きくなり、ファイルの物理サイズが最大値を越えてしまうため、失敗します。

    関連資料 :

 

File System Manager

File System Manager は外部ファイル・システム(Foreign File System)の利用を管理します。File System Manager は、外部ファイル・システムを組み込み、識別し、オペレーティング・システムとインターフェースをとる、共通な手段を提供します。
  • FSMベース・ファイル・システムに対するXGetVolInfo要求は、(GetVolInfo要求と同じように)File Manager の呼び出しもと(caller)がワーキング・ディレクトリ番号(working directory number)あるいは省略時ボリューム番号(default valume number)を使った場合、ioVRefNumにワーキング・ディレクトリ番号あるいは省略時ボリューム番号(値ゼロ)を渡すようになりました。Mac OS 8.1ではFSMベース・システムにパラメータを渡すとき、常にioVRefNumに実際のボリューム参照番号を設定していました。この変更によりFSMベース・ファイル・システムは、ioVNmFlsに何を返すべきか正しく判定できるようになりました。
  • UTTrashBlocksは、正しくOSErr(noErr、rfNumErrあるいはfnOpnErr)を返すようになりました。Mac OS 8.5以前には、UTTrashBlocksはfileRefNumパラメータとして渡されてファイル参照番号(file reference number)を返していました。
  • File Manager のディスクキャッシュはUTReleaseBlockとUTMarkDirtyで渡されるパラメータのレンジチェックをするようになりました。バッファパラメータが不正な場合でもシステムがクラッシュしなくなりました。

    関連資料

 

Folder Manager

Folder Manager は、特殊フォルダ(“機能拡張”フォルダ、“初期設定”フォルダなど)を、その実際の名前に依らないで、場所を特定する機能を提供します。これはアプリケーションをローカライズするデベロッパが利用するものです。
  • Folder Manager は、ファイルタイプが 'pref' の初期設定ファイル(初期設定)、共用ライブラリ(機能拡張)、データフォークのフォント(フォント)、オープンフォントアーキテクチャのプラグイン(機能拡張)、AppleTalk 機能拡張(機能拡張)に対する自動移動を新しく定義しました。
  • FindFolder は、“プリンタ記述ファイル”の実際の位置を返すようになりました。
  • ファイルタイプが 'issp' のインターネット検索サイト(インターネット検索サイト)に対する自動移動が定義されました。
  • ファイルタイプが 'JPEG' のファイルは“デスクトップピクチャ”フォルダに自動移動されます。
  • Mac OS 8.0 以前のシステムソフトウェアのように、FindFolder のフォルダキャッシュは、ボリュームの交換を検知してキャッシュを更新するようになりました。Mac OS 8.0 および Mac OS 8.1 では FindFolder が古くなったデータを返す可能性がありました。
  • Mac OS 8.5ではいくつかの新しいフォルダが定義されました。表7に新しいフォルダとそのタイプを挙げます。

    表 7 Mac OS 8.5 の新しいフォルダタイプ

    フォルダ名
    OSType
    説明
    ランチャー項目
    'laun'
    ランチャー・コントロールパネルに現れる項目。項目中のフォルダで“・”(option + 8)で始まる名前のものは、ランチャー・ウインドウの独立の項目として現れます。
    インターネット検索サイト
    'issf'
    インターネット検索サイト用設定ファイルの保存先。インターネット検索サイトにアクセスするときに Sherlock が使用する。ファイルタイプが 'issp' のファイルがこのフォルダに自動移動されるます。
    TheFindByContentFolder
    'fbcf'
    各ボリュームのルート・ディレクトリに置かれます。このフォルダには Sherlock の“内容で検索”により作成されたファイルが保存されます。
    'Find'
    'fnds'
    Sherlock で使用されるファイルの保存先。
    インストールログ
    'ilgf'
    インストーラのログファイルの保存先。
    ColorSync 特性
    'prof'
    ColorSync 特性の保存先。
    アピアランス
    'appr'
    アピアランス用の素材の保存先。
    テーマファイル
    'thme'
    アピアランス用のテーマファイルの保存先。
    サウンドセット
    'snds'
    アピアランス用のサウンドセットの保存先。
    デスクトップピクチャ
    'dtp'
    デスクトップピクチャの保存先。ファイルタイプが 'JPEG' のファイルは、“システムフォルダ”にドロップされるとこのフォルダに自動移動されます。
    よく使う項目
    'favs'
    インターネット・ロケーション・ファイルなど、よく使う項目へのエイリアスの保存先。このフォルダに項目を追加する機能は、コンテクスト・メニュー、Finder、Navigation Services などにあります。
    スクリプト
    'scr'
    AppleScript を保存する場所です。
    最近使ったアプリケーション
    'rapp'
    アップルメニューオプションは最近使用したアプリケーションをここに保存します。
    最近使った書類
    'rdoc'
    アップルメニューオプションは最近開いた書類のエイリアスをここに保存します。
    最近使ったサーバ
    'rsvr'
    アップルメニューオプションは最近マウントしたサーバのエイリアスをここに保存します。
    Speakable Items
    'spki'
    音声認識が認識するスクリプトや項目の保存先。
    インターネット
    'int'
    インターネット関連のアプリケーション、リソース、ツールの保存先。
    作業環境マネージャモジュール
    'walk'
    作業環境マネージャのモジュールの保存先。
    作業環境マネージャ初期設定
    'trip'
    作業環境マネージャの初期設定ファイルの保存先。
    作業環境
    'fall'
    作業環境ファイルの保存先。

    関連資料 :

 

Font Manager

Font Manager はシステム全体に対して、テキスト情報を表示するのに必要な、記号とグリフを取り出すための機能を持ちます。
  • Font Manager は PowerPC ネイティブとなりました。
  • イタリックのビットマップフォントが同じサイズの TrueType フォントを不正に上書きし、間違ったスタイルが表示されていた問題が修正されました。ビットマップフォントのスタイルと完全に一致しない限り TrueType フォントが表示されるようになりました。
  • Font Manager はプロセス毎にキャッシュを割り当てたり、解放したりしなくなりました。システム全体に対するキャッシュが起動時にシステムヒープに割り当てられます。全てのプロセスはこのキャッシュを共有します。
  • Font Manager は前のバージョンより詳しいパラメータチェックを行います。
  • Font Manager は以前より積極的にフォントをフォント・キャッシュからパージするようになりました。
  • Mac OS 8.5 のすべての英文フォント(VT102 を除く)にユーロ通貨記号が加わりました。
  • Mac OS 8.5 の英語版では Capitals、Gadget、Sand、Techno、Textile が加わりました。Mac OS 8.5 の日本語版では Osaka Bold、Osaka Narrow が加わりました。

    関連資料 :

 

Help Manager

Help Manager はヘルプ・バルーンおよびヘルプ・メニューの描画と表示を行います。

 

Icon Services

Mac OS 8.5 の新規機能として、Icon Services はファイル、ディレクトリ、あるいはその他の良く使われるアイコン(アラートアイコン、ヘルプアイコンなど)を表示するための情報を、効率的に取り出す機能を提供します。
  • Icon Services とアイコン・ユーティリティは PowerPC コードでインプリメントされています。
  • Icon Services は Appearance Manager を意識していて、常にアクティブなテーマと一貫性のある情報を返します。
  • データの複製を避け、効率性を高めるに、Icon Services はすべてのアプリケーションで共有されるアイコンを 1 つのキャッシュで管理します。得られたアイコン・データは全てのアプリケーションに共通で、2 つの異なったアプリケーションが同じアイコンデータを参照する際はアイコン・リファレンスを使用します。キャッシュされているアイコンは参照数(reference count)があり、参照数がゼロになった場合のみアイコンはキャッシュから削除されます。
  • 新しい 'icns' リソースはデータとして、4 つのサイズ(ミニ、小、大、特大)を 4 つの色深度(1 ビット、4 ビット、8 ビット、32 ビット)として持ち、また 2 種のマスク(1 ビット、8 ビット)を持ちます。
  • 'icns' リソースはディープ・マスク(8 ビット)を持つことができ、これにより透明描画効果を指定することができます。ディープ・マスクの各ピクセルは描画する際の透明度を表わします。透明度のレベルは 0(透明)から 255(不透明)の間で指定します。
  • MacOS 8.5 以前は、任意の 34 色でしか適切にハイライトできませんでした。(この 34 色はApple アイコンカラーとして知られていました。)この制限はなくなりました。
  • ドライバは、Device Manager で説明されているように、kdgMediaIconSuite ドライバ Gestalt を指定することでカラーアイコンを持つことができます。

    関連資料 :

 

InterfaceLib

InterfaceLibはPowerPCベースのコンピュータの多くのMac OSルーチンに対して、Code Fragment Manager とのインターフェースを提供します。
  • 低メモリアクセス関数(low memory accessor)LMGetABusVarsは68KとPowerPCで異なった挙動を示し、また新しい関数が提供されますので、使わないで下さい。新しいアクセス関数はLMGetABusGlobalsで0x02D8にあるlongを取ってきますので、これを使用して下さい。LMGetABusVarsは、以前と同じように0x02D8を返します。次のアクセス関数を追加されました: LMGetABusGlobals, LMSetABusGlobals, LMGetABusDCE,LMSetABusDCE。
  • 以下の低メモリアクセス関数が追加されました:
    • LMGetKeyTime--最後のキーストロークを受け取った時の、TickCountから返された値。
    • LMGetMBTicks--最後にマウスボタンが押された時の、TickCountから返された値。

    以前は、リスト2で示されるルーチンでこれらの値を取得していました。

    リスト2 KeyTimeとMBTicksに対する低メモリアクセス関数

          long LMGetMBTicks (void) {
              return (*(long *)0x016E);
          }
         
          long LMGetKeyTime (void) {
              return (*(long *)0x0186);
          }
また、これらの値を設定する関数も追加されました:LMSetKeyTime, LMSetMBTicks
  • AddDrive

    IntefaceLibのPowerPC AddDriveグルー・コード(glue code)にはパラメータの取り扱いに問題があり、68Kコードに渡す前にドライバ番号を壊していました。この問題が修正されました。

  • 新しい Alias Manager(Alias Manager)ルーチン

    IsAliasFile, ResolveAliasWithMountFlags,ResolveAliasFileWithMountFlagsはInterfaceLibに含まれました。

  • 以前は68kコードのみから利用できた、新規にInterfaceLibに追加されたルーチン
     DriverInstall, DriverInstallReserveMem, DIXFormat,
     DIXZero, DIReformat, PBUnmountVolImmed,
     ReallocateHandleSys, LockMemoryForOutput,
     MakeMemoryResident, ReleaseMemoryData,
     MakeMemoryNonResident, FlushMemory,
     InstallExtensionNotificationProc,
     RemoveExtensionNotificationProc,
     InstallExtensionTableHandlerProc,
     RemoveExtensionTableHandlerProc, FlushCodeCacheRange,
     NewCServiceWindow, UCTextServiceEvent, ataManager
  • 以前は68kコードからのみ利用できたPurgeSpaceコールの、残りのものがInterfaceLibに追加されました。
     PurgeSpaceTotal, PurgeSpaceContiguous,
     PurgeSpaceSysTotal, PurgeSpaceSysContiguous
  • ファイル・システムのコールの全てがInterfaceLibに追加されました。
     UTAllocateFCB, UTReleaseFCB, UTLocateFCB,
     UTLocateNextFCB, UTIndexFCB, UTResolveFCB,
     UTAllocateVCB, UTAddNewVCB, UTDisposeVCB,
     UTLocateVCBByRefNum, UTLocateVCBByName, UTLocateNextVCB,
     UTAllocateWDCB, UTReleaseWDCB, UTResolveWDCB,
     UTFindDrive, UTAdjustEOF, UTSetDefaultVol,
     UTGetDefaultVol, UTEjectVol, UTCheckWDRefNum,
     UTCheckFileRefNum, UTCheckVolRefNum, UTCheckPermission,
     UTCheckVolOffline, UTCheckVolModifiable,
     UTCheckFileModifiable, UTCheckDirBusy, UTParsePathname,
     UTGetPathComponentName, UTDetermineVol, UTGetBlock,
     UTReleaseBlock, UTFlushCache, UTMarkDirty,
     UTTrashVolBlocks, UTTrashFileBlocks, UTTrashBlocks,
     UTCacheReadIP, UTCacheWriteIP, UTBlockInFQHashP,
     UTVolCacheReadIP, UTVolCacheWriteIP, InstallFS,
     RemoveFS, SetFSInfo, GetFSInfo, InformFSM, InformFFS
  • 以下のDriverServicesLibのコールがInterfaceLibに追加されました。
     BlockZero, BlockZeroUncached, IncrementAtomic,
     DecrementAtomic, AddAtomic, BitAndAtomic, BitOrAtomic,
     BitXorAtomic, CompareAndSwap, IncrementAtomic8,
     DecrementAtomic8, AddAtomic8, BitAndAtomic8,
     BitOrAtomic8, BitXorAtomic8, IncrementAtomic16,
     DecrementAtomic16, AddAtomic16, BitAndAtomic16,
     BitOrAtomic16, BitXorAtomic16, TestAndSet, TestAndClear
         
以前はこれらのドライバーは、native driver('ndrv')のみとドキュメントされていました。今回のバージョンのInterfaceLibでは、他のタイプのコードからも呼ぶことができます。

 
互換性に関する注意事項
 
新しいバージョンのInterfaceLibとリンクするデベロッパで、以前のバージョンのシステムソフトウェアで動作する必要がある場合、新しいシンボルに対して弱リンク(weak

link)して下さい。こうしないと、古いバージョンのInterfaceLibが使われているとき、Code Fragment Manager は新しいシンボルを使っているアプリケーションの起動を拒否します。InterfaceLibの新しいシンボルに弱リンクするデベロッパは、弱リンクするルーチンが定義されているかどうか呼ぶ前に必ずチェックして下さい。

関連資料

  • DriverServicesLibAlias Manager
  • テクニカルノート TN1083“Code Fragment Manager ベースの共有ライブラリへの弱いリンク(Weak-link)”
  • テクニカルノート TN1127“「失われたリンク」を求めて”

 

List Manager

List Manager はオペレーティング・システムの一部で、リスト項目を使ってのユーザとのやり取りをするための描画とその管理をする、標準のユーザ・インターフェース機能を提供します。
  • List Manager はPowerPCコードでインプリメントされました。
  • ライブ・スクロールバーのインジケータ・ドラッグ(live scrollbar indicator dragging)のサポートが追加されました。
  • プロポーショナル・スクロールバーのインジケータがサポートされました。
  • 描画がオフの状態(LSetDrawingModeあるいあはLDoDrawを呼ぶ)でリストのセルを削除したり追加した場合、ListHandleのboundが少し乱れ、描画が再びオンになったときに正しく描画されない状況がありました。この問題は List Manager が導入された当初からありましたが、Mac OS 8.5で修正されました。
  • リスト・クリック・ループ(List click loop)はLists.hにあるミックスト・モード・グルー(Mixed Mode glue)を使い、PowerPCネーティブ・コードで書けるようになりました。

     

    警告:
    リスト・クリック・ループをPowerPCネーティブ・コードで書くと、Mac OS 8.5以前のシステム・リリースとの下位互換性はなくなります。Mac OS 8.5以前、全てのシステムと互換性を保つためには、68kアセンブラあるいは68kアセンブラ・スタブを使ってクリップ・ループを作成する必要があります。

    関連資料

 

MathLib

MathLibはPowerPCコンピュータの浮動小数点をサポートするルーチンを実現するソフトウェアです。全てのPowerPCプロセッサは組み込み浮動小数点処理機能を持っています。MathLibで提供されるルーチンはこれらの機能を補完するものです。
  • MathLibはシステム・ファイルのデータ・フォークに含まれるようになり、その結果ページングの対象となりました。

    関連資料

 

Memory Manager

Memory Manager は、メモリの割り当て要求の管理を行うオペレーティング・システムの一部です。

 

Menu Manager

Menu Manager はオペレーティング・システムの一部で、マウスが押されている間にスクリーンにメニューバーを描画することと、メニューとポップアップメニューを描画することに責任を持ちます。
  • Menu Manager のほとんどがPowerPCでインプリメントされました。
  • タグ・データとメニュー項目(プロパティー)の関連づけがサポートされました。
  • システムMDEFを使うメニューに対するメニュー・コンテント(menu contents)はVMがオンの場合でもキャッシュされるようになれました。
  • アプリケーション・メニューから現在のアプリケーション名(current application's name)を削除できるようになりました。
  • メニューに現れるアイコンがディゼーブル(disable)できるようになりました。
  • メニューバーは字間の狭いスタイルのテキスト(condensed style texed)で描かれるようになり、スクリーンが狭くて全てのメニューの内容が描ききれない場合、メニュータイトルの末尾が切られる様になりました。
  • メニューマーク欄を除外する機能が追加されました。
  • 255以上のサブメニューがサポートされました。SetMenuItemHierarchialIDを使えば、menu IDの全領域(-32767から32767)が設定できます。
  • 31以上のインデックスでのメニュー項目のイネーブル(enable)とディゼーブル(disable)がサポートされました。
  • AppendResMenuでのソーティングで、非英文字の場合正しくソーティングされませんでした。ここでは、CompareStringではなくRelStringが使われていました。AppendResMenuはCompareStringを使うようになり、その結果、非英文字でも正しくソーティングするようになりました。
  • メニュー・バーの表示(show)と非表示(hide)がサポートされました。
  • メタ文字(meta-character)解釈なしの新しいappend/insert APIが追加されました。
  • システムMDEFは、全てのキーボード・モディファイア(keyboard modifiers)とグリフをサポートするようになりました。
  • メニューを描画するときにフォントが設定できるようになりました。デベロッパはこの新しいAPIを使うようにし、低メモリ・グローバルSysFonttFamとSysFontSizeを使った設定はしないで下さい。

     

    互換性に関する注意
    Mac OS 8.5では Menu Manager は、色づけに正しく合わせるためのサードパーティのMDEFの挙動の変更は行いません。カスタムMDEFを持つアプリケーションのベンダーは、アペアランスをサポートするようにプロダクトを改良する必要があります。

    互換性に関する注意
    Menu Manager は、スティッキー・メニュー(sticky menus)をトラック(tracking)している時に、Bottonを強制的にtrueを返すような Event Manager の挙動の変更は行いません。Buttonがfalseを返すことに依存しているMDEFの場合、その製品は変更する必要があります。

    関連資料

 

Navigation Services 1.1

Navigation Services は、ユーザがファイルやその他の資源を探したり選択するための、新しいオープンと保存(save)のパネルを提供します。

互換性に関する注意
Navigation Services は Standard File を事実上旧式なものとします(effectively obsoletes)。将来のMac OSとの互換性に興味のあるデベロッパは、この際是非とも Standard File へのコールを Navigation Services へのコールへ置き換えて下さい。

関連資料

 

Notification Manager

Notification Manager は割り込み中のコードに特定のイベントをユーザに通知する機構を提供します。
  • Notification Manager は割り込みレベル・マスクが7に設定されている場合に(割り込み中に実行さていなくても)GetResourceを呼んでいました。修正されました。

    関連資料

 

PC Card Manager

PC Card Manager はPC Cardに関連したソフトウェアの問題を処理します。
  • PC Cardがスリープ中に(ピン・ホールを操作して)イジェクトされ、別のカードに置き換わった場合、スリープ後の新しいカードが正しく認識されず、古いカードのアイコンがディスクトップに残ったままでした。PC Card Manager は、カードがこのように置き換わった場合でも、新しいカードを正しく登録するようになりました。
  • PC Card Manager はPC CardがCIS(Card Information Structure-通常カード自身に保存されている情報で、カードがどのような種類なのか示すもの)を持たない場合でも、取り扱うようになりました。この変更の前は、そのようなカードは単純にイジェクトされていました。このバージョンでは PC Card Manager は、たとえばPCI構成情報の様な他のデータを使用し、そのようなカードの情報を確立します。

    関連資料

 

PPC Toolbox

Program to Program Communicationsツールボックスは、同じマシン上のプロセス間やAppleTalkネットワークでつながっている別のマシンのプロセス間でのプロセス間通信機能を提供します。
  • PPCブラウザーは低メモリーの状況でもクラッシュせずに処理するようになりました。
  • 前のバージョンのPPCブラウザーで、NBPはコンピュータを探してリストを作る際に遅延時間(delay)が短すぎました。その結果、低速で結合されたネットワークでは、コンピュータのリストがちらつく場合がありました。NBPはコンピュータを探す際の遅延時間を多くして、コンピュータのリストのちらつきは少なくなりました。
  • PPCブラウザは内部のエラーを厳重にチェックするようにしました。

    関連資料

 

Process Manager(Process Manager)

Process Manager は複数のアプリケーションの間でプロセッサを共有させます。
  • ある状況の下で、カーソルが小さな領域のスクリーン・キャプチャをするさいに、期待したようにクロスヘアに替わりませんでした。修正されました。
  • LaunchApplicationがエイリアス・ファイルも受け取るようになりました。
  • Process Manager は Text Services Manager が生成した”偽の”keyDownイベントに対してjGNEFilterを呼ぼうとする時、以前より厳密になり、いくつかの重複イベントを消しました。
  • アプリケーション・スイッチの間、Process Manager はフォアグランド・アプリケーションあるいはText Services Manager レイヤの浮動ウインドウ(floating windows)に対するイベント・キューに、マウス・ダウン(mouse down)がペンディング状態であるかどうかチェックするようになりました。この修正により、フォアグランド・アプリケーションのウインドウでのマウス・クリックが、スイッチしてくるアプリケーションに盗み取られる可能性がなくなりました。
  • Process Manager は、見えない'appe'ファイルを起動することがなくなりました。
  • あるプロセスが、ひとつのまたは複数のプロセスがdefault volumeとしていたボリュームをアンマウントすると、default volumeとしていたプロセスに切り替えられた時、これらのプロセスでdefault volumeが正しく更新されませんでした。このために、File Managerのディスク切り替えダイアログで、アンマウントされたボリュームの部分にゴミがはいったりブランクになっていました。Process Managerの修正によりプロセス切り替えがおこった時のFile Managerのdefault volumeが正しく設定されるようになりました。

    関連資料

 

QuickDraw

QuickDrawはグラフィカル情報をスクリーンやその他のラスターデバイスに描画し、表示するために使うMac OSの一部です。
  • パレット・マネージャ(Pallete Manager)とピクチャ・ユーティリティ(Picture Utilities)を除く、ほとんどのQuickDrawは、PowerPCネーティブになりました。
  • 68Kマシンでレコードされたピクチャが、不正な0x9A(direct 24 bit images)オプコードを含んでいる場合、PowerPCマシンで正しく再生ませんでした。この問題は修正されました。
  • QuickDrawピクチャに対する16ビット・エンコード・ルーチンが時々不正なデータを生成していましたが、この問題は修正されました。
  • 大きなサイズのフォントが描画されないという問題が修正されました。フォントは、その最大表示サイズ以上のサイズでの表示を要求されたとき、可能な最大サイズで表示されるようになりました。
  • ローマン・スクリプト・ユーティリティ(Roman Script Utilities)(例えば、DrawJustified, CharToPixel)はQuickDraw Textへ移動しました。
  • 'sbit'のサポートはWorldScript IIパッチを通してのみ利用できましたが、標準システムに組み込まれました。したがって2バイト・キャラクタを使用するシステムは機能拡張をオフにしてもブートされます。
  • CopyDeepMask転送モードの全てが正しく動作するようになりました。
  • QuickDrawはより細かいパラメータのチェックを行います。パラメータが間違っている場合、QDErrorがparamErrのリザルト・コードを返します。QDErrorは、以前そうでなかった場合でも、エラーを返す可能性が多々あります。
  • bkPixPatをFillCRgnやFillCRectに渡すと現在のグラフポートを破損するという問題がありましたが、修正されました。現在のbackground pixpatをパラメータとしてFillCRect またはFillCRectルーチンに渡すことができるようになりました。

    警告
    Mac OS 8.5以前の全てのバージョンのカラーQuickDrawでFillCRect(&qd.thePort->portRect,((CGrafPtr) qd.thePort)->bkPixPat)またはFillCRgn(myRegion, ((CGrafPtr) qd.thePort)->bkPixPat);を呼ぶと現在のGrafPortのbkPixPatが破壊されます。

  • ピクチャを記録する時、QuickDrawはラスタ・イメージ(raster images)をフレーム・バッファから一時に1バイトずつ読み込み、このためいくつかの非アップル・デバイスからフレーム・バッファ・データを読み込むとき互換性に問題を生じる場合がありました。より高い互換性を実現するために、フレーム・バッファはピクセル・サイズで読まれるようになり、それが内部的なバッファに読まれた後にRLEエンコーディング・ルーチンに渡されるようになりました。
  • ほとんど全てのQuickDrawがシステム・ファイルのデータ・フォークに含まれ、その結果ページングの対象になりました。カーソル・ライブラリはページングの対象ではなく、メモリー上に常駐しています。

    互換性に関する注意
    新しいQuickDrawは、以前の全てのバージョンのQuickDrawに比べて、より詳しくパラメータ・チェックを行っています。その結果、新しいQuickDrawは以前にはそれほどはっきりしていなかった、軽い問題を表面化すため、デベロッパはデバッグの役にたつことに気づかれると思います。デベロッパの皆様には、新しいQuickDrawに対して製品の検証し、QuickDrawの呼び方が正しいことを確認することを強くお奨めします。

    関連資料

 

QuickDraw Text

QuckDrawテキストはテキスト情報をスクリーンとその他のラスタ・デバイス上の描画し表示するために使用するMac OSの一部です。
  • このリリースの QuickDraw Text から、新しいGestalt selecterのgestaltQDTextVersion ('qdtx')が定義されました。このバージョンのQuickDrawTextで返される値はgestaltAllegroQDTextです。

    互換性に関する注意
    このセクションで説明される新しいQuickDraw Textルーチンが利用できるのはセレクタgestaltQDTextVersionでGestaltを呼んだ結果が、定数gestaltAllegroQDTextと等しいかあるいは大きい場合のみ利用できます。

 

  • アンチ−エイリアス・テキストの描画がQuickDraw Textに追加されました。アンチ−エイリアス・テキストの描画が行われるのは、以下の条件が満足された場合です。アンチ−エイリアス・テキスト描写がオン、描画対象のデバイスのピクセル深度(pixel depth)が8以上、メモリが十分にある、描画が要求されたフォント・サイズがアンチ−エイリアス描画の最小サイズより大きい、そして描画されるフォントがアウトライン・フォントの場合です。2つの新しいアンチ−エイリアス描画の状態にアクセスするルーチンは、システム・ファイルに含まれる"FontManager"という名称のシャアド・ライブラリとリンクすれば、PowerPCアプリケーションから呼ぶことができます。

    IsAntiAliasedTextEnabled

    Boolean IsAntiAliasedTextEnabled(SInt16* outMinFontSize);

    outMinFontSizeはオプション・パラメータで、NULLに設定することができます。outMinFontSizeがNULLでない場合、そのアドレスの16ビットの整数がアンチ−エイリアス・テキストの最小限サイズに設定されます(アピアランス・コントロールパネルで設定します)。

    この関数IsAntiAliasedTextEnabledは、アンチ−エイリアス・テキスト表示がイネーブルであるとき、真を返します。

    SetAntiAliasedTextEnabled

    OSStatus SetAntiAliasedTextEnabled(Boolean inEnable, SInt16 inMinFontSize);

    inEnableはアンチ−エイリアス・テキスト描画の、設定する状態を示します。inEnableが真の場合、アンチ−エイリアス・テキスト描写がオンになり、またQuickDraw Textグローバルの

    outlinePreferredもオンになります。

    inMinFontSizeはアンチ−エイリアス・テキストとして描画されるフォントの最小サイズを定義します。この値は1から128までの値を指定します。inMinFontSizeがこの範囲にない場合、省略時設定値の12が使われます。

    SetAntiAliasedTextEnabledは常にnoErrを返します。

    注意:ビットマップ(NFNT)とアウトライン(sfnt)の両方を持つフォントの場合、暗黙的なoutlinePreferredの変更によりビットマップ・フォント・サイズのメトリックスが変更されます。

    警告
    SetAntiAliasedTextEnabledは、テキストの表示の際に非常に細かい制御がしたいという、特殊な状況を必要とする操作のときのみに限って使用して下さい。アンチ−エイリアス・テキスト描写の状態を変更したデベロッパは、制御をシステムの戻す前に、その状態を元の状態に戻して下さい。そのことを忘れると、システムの他の部分と、特にアピアランス・コントロールパネルが、実際のアンチ−エイリアス・テキスト描画との同期がとれなくなります。

  • スクリーンに描画されるテキストのピクセル次元(pixel dimension)を取り出す、2つの新しいルーチンが追加されました。これらのルーチンは、システム・ファイルに含まれる"FontManager"という名称のシャアド・ライブラリとリンクすれば、PowerPCアプリケーションから呼ぶことができます。新しいルーチンは次のように定義されます。

    QDTextBounds

    void QDTextBounds(short byteCount, const void* textAddr, Rect* bounds);

    byteCountは、アドレスtextAddrの位置にあるバッファに含まれる、テキストのバイト数です。

    textAddrは、byteCountバイトのテキストデータを指します。

    boundsはQDTextBoundsで計算される座標のRect構造体を指します。このコールの完了後、boundsは(現在のGrafPortのフォントの設定に従い)描画されたテキストのイメージ全体を囲む、バウンド座標(bounding coordinate)となります(ここには、テキスト描画後に最初のペンの位置と最後のペンの位置からはずれた部分も含みます)。ここで返される座標は現在のペン・ポジションに対する(現在のペン・ポジションが原点であるかのような)座標ですので注意して下さい。例えばリスト3は、テキストのイメージを囲む四角を描画する時のQDTextBoundsの使用法の例です。ここで注目して欲しいは、QDTextBoundsが返す値が現在のペン・ポジションからのオフセットを使って、テキストの描画と四角形の描画に同じ座標系を使っていることです。

    リスト3 テキストの描画の場所を求めるためのQDTextBoundsの使用法

          Rect bounds;
          char *text = "sample text";
          Point where;
          SetPt(&where, 100, 100);
          MoveTo(where.h, where.v);
          PenSize(1,1);
          QDTextBounds(text, strlen(text), &bounds);
          OffsetRect(&bounds, where.h, where.v);
          InsetRect(&bounds, -1, -1);
          FrameRect(&bounds);
          DrawText(text, 0, strlen(text));
テキスト・イメージの最左端はペン・ポジションの左の可能性もあるし右の可能性もあり、テキスト・イメージの最右端は、最後のペン・ポジションの左の可能性もあるし右の可能性もあります。

FetchFontInfo

OSErr FetchFontInfo(SInt16 fontID, SInt16 fontSize, SInt16 fontStyle, FontInfo* info);

fontIDはフォントのフォントID番号です。

fontSizeはpixel単位でのフォントのサイズです。

fontStyleはフォントのフォント・スタイル・フラグを持ちます。

infoはフォント情報レコードへのポインタで、ここに結果の情報が返されます。

FetchFontInfoではGetFontInfoと同じ情報が返りますが、後者は現在のGrafPortの情報を集めただけなのに反して、前者ではパラメータで指定されたフォントの情報が返されます。FetchFontInfoがエラーを返した場合、FontInfoレコードのフィールドは0に設定されます(エラー番号はFMSwapFont)。

関連資料 :

 

Script Manager

Script Manager はローマ文字および非ローマ文字の両方のスクリプト・システムの特性を制御し、変更し、アクセスする機能を提供します。
  • シンプル・スクリプト(Simple Scripts,Worldscript機能拡張を必要としないスクリプト)は、機能拡張がオフの場合、システムのブート時にはロードされませんでした。シンプル・スクリプトが機能拡張オフの際にもロードされるようになりました。
  • 新しいキーボード配置(keyboard layout)が選択されたときには常に、キーボード・メニューのアイコンが2度描かれるようになりました。
  • ワールドスクリプト・パワー・アダプタ(WorldScript Power Adapter)はランゲッジ・キット(language kit)あるいはその他のインストーラからはロードされなくなりました。というのは、Mac OS 8.5ではその機能がシステム・ファイルに組み込まれたからです。ワールドスクリプト?(WorldScript II)は他の機能拡張とは違い、ロードされなくなりました。
  • UnicodeスクリプトとUnicodeキーボード配置(keyboard layout)が追加されました。
  • フォントとキーボードの同期がオフできます。キーボード・コントロールパネルからあるいはsmGenFlags Script Manager 変数のsmfDisableKeyScriptSyncフラグをセットすることで、フォントとキーボードの同期がオフできます。KeyScriptが呼ばれると,このフラグを調べてキーボード・スクリプトと現在のスクリプトの同期が必要かどうか調べます。キーボード・スクリプト同期がオフの場合に、個別のKeyScriptを呼び出すとき、強制的にキーボード同期を行いたい場合には、デベロッパはKeyScriptへにコード引数のなかのビット7(smKeyForceKeyScriptBit)をセットします。smGenFlags Script Manager 変数のsmfDisableKeyScriptSyncフラグがセットされている場合、KeyScriptへにコード引数のなかのビット7(smKeyForceKeyScriptBit)がセットされていない限り、KeyScriptを呼び出しても現在のキーボードスクリプトとの同期は起こりません。

    関連資料 :