Save-Related Properties

There is a set of properties that indicate to the editor what should be saved as part of the presentation.

The first such property controls the inclusion of Personally Identifiable Information (“PII”). PII is any information that can be used to identify the author or contributor to a presentation. And while there are cases where this information is exposed visually to the user (e.g., author name in a comment shape), there are other cases where the information is not immediately evident to the user (e.g., the document author name in the list of document properties).

An implementation can provide a mechanism by which the author of a presentation can configure a file to always remove any PII that might otherwise by normally included during a regular save operation. While not a guarantee that no PII is stored in the file (e.g., consider a shape with my name in it—in some cases it describes content in the file [my position in my group’s organization chart] whereas in others it is an editorial directive [“check with ShawnV on this point”]. Given this ambiguity, we cannot solve all cases of this. As a result, this is more a convenience feature than a privacy management feature.

The second set of save-related properties has two groupings of properties. The first controls whether or not fonts will be embedded into the package representing the presentation. The second, enabled by setting the first, allows an implementation to optimize such font embedding to keep the size minimal, at the cost of future editing on other machines.

<xsd:attribute name="embedTrueTypeFonts" type="xsd:boolean"
  use="optional" default="false"/>
<xsd:attribute name="saveSubsetFonts" type="xsd:boolean"
  use="optional" default="false"/>

The user scenario behind these properties is as follows. Assume you are putting together a presentation to distribute to external customers. You happen to use an East Asian font with an on-disk file size of around 5 megabytes.

Assuming that this font is not a standard font that is widely distributed, not including this font will cause font substitution when the presentation is opened on machines that don’t have a copy of the font. In any case, this can radically change the visual appearance of the presentation; in some cases, it can render the presentation unreadable.

Because you cannot afford the presentation to be unreadable or to look unprofessional, you decide to embed the font. By default, the implementation will set @embedTrueTypeFonts to true and embed the entire 5 megabyte font file in the presentation package. This will clearly bloat the file, but will ensure that anyone viewing or editing this file will have the same font experience as you originally had (subject to licensing restrictions, of course).

Since you are distributing the presentation, and your primary purpose is for people to view the presentation, you can reduce the amount of font data embedded in the presentation package. By setting the second property (@saveSubsetFonts) to true, only those characters in the font that were actually used to create the presentation are saved. This yields less font data stored in the file at the cost of not being able to use unused characters in future edits of the presentation on different machines.

The third property related to saving, controls whether or not an implementation can automatically compress pictures contained in the presentation. This is particularly important given the proliferation of digital cameras and scanners and the increasing importance of small files (e.g., to save network bandwidth, reduce storage required for mail and file servers, etc.).

The final property in this set specifies a password that is required to enable editing of the file using the implementation. Because this is a convenience feature intended to prevent accidental changes to information, it is stored in clear text as an xsd:string.

By storing this information in the file, the implementation will prompt the user for this password in order to open the file read/write; if the user does not provide the correct modify password, the implementation will open the file read-only.