Skip to content

First pass of a v4 cookbook #598

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 33 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
42dbef4
First pass of a v4 recipe
glenrobson Apr 8, 2025
1eeeed0
Pausing validation
glenrobson Apr 8, 2025
7a6b77e
Reversing if statement to default to 3
glenrobson Apr 8, 2025
485a655
Don't need to specify supported versions
glenrobson Apr 8, 2025
68240e1
Adding a v3/v4 link to homepage
glenrobson May 2, 2025
adc723b
Making version more prominent and defaulting to 3
glenrobson May 2, 2025
16875c4
Fixing link
glenrobson May 2, 2025
18a6bc1
Updated for IIIF Presentation v4 🆙
triplingual May 28, 2025
3f476a9
Added new files for v4 structure and content ➕
triplingual May 28, 2025
1943076
Increased clarity and specificity of label value 🛠️
triplingual May 28, 2025
1ec93b0
Added highlighting for new-to-v4 Type value 🎨
triplingual May 28, 2025
320a34c
Added convenience links to the two parts of the v4 spec ➕
triplingual May 28, 2025
571b9fb
Mentioned v4 difference and linked to appropriate spec section 📝
triplingual May 28, 2025
b0fb77e
Updated Implementation Notes body text for v4 📝
triplingual May 28, 2025
a2303d4
Removed incorrect and unnecessary info 🚮
triplingual May 28, 2025
91920dc
Re-centered recipe title 🎨
triplingual May 30, 2025
45b0edf
Edited per cookbook authors call to leave behind comparisons to MVM I…
triplingual May 30, 2025
eaceab4
Reworded related recipe text, added 3D related 📝⛓️
triplingual May 30, 2025
2398efc
Moved highlighting to the correct template place 🚚🤦🏻‍♂️
triplingual May 30, 2025
e0d487e
Added entry for prezi4 version of the recipe ➕
triplingual May 30, 2025
aa76f6a
Sorted links numerically for readability 🔢
triplingual May 30, 2025
c24d847
first version of updated simplest video recipe for v4
robcast May 30, 2025
0dc6074
Removed duplicative TOC entry 🚮
triplingual May 30, 2025
c0c17ba
Updated IDs semantically and functionally (in the case of target) 📝🆙
triplingual May 30, 2025
1840d82
add v4 magic and links.
robcast May 30, 2025
5fcdbc1
fix more v4 path issues.
robcast May 30, 2025
509f93b
Merge pull request #611 from IIIF/v4-0003-simplest-manifest-video
glenrobson May 30, 2025
9090a80
Merge branch 'v4' into v4-0002-simplest-manifest-audio
triplingual May 30, 2025
6172cad
Merge pull request #607 from IIIF/v4-0002-simplest-manifest-audio
triplingual May 30, 2025
4352337
Fixing links to keep in v4 area of cookbook
glenrobson May 30, 2025
31e621d
Adding 3d model
glenrobson May 30, 2025
003aeef
Removing viewers
glenrobson May 30, 2025
5517e82
Merge pull request #612 from IIIF/v4-fixes-3d
glenrobson May 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ jobs:
python -m pip install --upgrade pip
pip install -r scripts/requirements.txt

- name: validate
run: scripts/validate.sh
# - name: validate
# run: scripts/validate.sh

- name: add URL to config
run: .github/bin/addURL.sh
Expand Down
48 changes: 19 additions & 29 deletions _includes/links.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@

[0001]: {{ site.cookbook_url | absolute_url }}/recipe/0001-mvm-image/ "Simplest Manifest - Image"
[0001-4]: {{ site.cookbook_url | absolute_url }}/recipe/0001-mvm-image/#version-4 "Simplest Manifest - Image"
[0002]: {{ site.cookbook_url | absolute_url }}/recipe/0002-mvm-audio/ "Simplest Manifest - Audio"
[0002-4]: {{ site.cookbook_url | absolute_url }}/recipe/0002-mvm-audio/#version-4 "Simplest Manifest - Audio"
[0003]: {{ site.cookbook_url | absolute_url }}/recipe/0003-mvm-video/ "Simplest Manifest - Video"
[0003-4]: {{ site.cookbook_url | absolute_url }}/recipe/0003-mvm-video/#version-4 "Simplest Manifest - Video"
[0004]: {{ site.cookbook_url | absolute_url }}/recipe/0004-canvas-size/ "Image and Canvas with Differing Dimensions"
[0005]: {{ site.cookbook_url | absolute_url }}/recipe/0005-image-service/ "Support Deep Viewing with Basic Use of a IIIF Image Service"
[0006]: {{ site.cookbook_url | absolute_url }}/recipe/0006-text-language/ "Internationalization and Multi-language Values"
Expand All @@ -10,77 +13,61 @@
[0009]: {{ site.cookbook_url | absolute_url }}/recipe/0009-book-1/ "Simple Manifest - Book"
[0010]: {{ site.cookbook_url | absolute_url }}/recipe/0010-book-2-viewing-direction "Viewing direction and its effect on navigation"
[0011]: {{ site.cookbook_url | absolute_url }}/recipe/0011-book-3-behavior/ "Book behavior (paging) variations"
[0299]: {{ site.cookbook_url | absolute_url }}/recipe/0299-region/ "Addressing a spatial region"
[0013]: {{ site.cookbook_url | absolute_url }}/recipe/0013-placeholderCanvas/ "Load a Preview Image Before the Main Content"
[0202]: {{ site.cookbook_url | absolute_url }}/recipe/0202-start-canvas/ "Load Manifest Beginning with a Specific Canvas"
[0014]: {{ site.cookbook_url | absolute_url }}/recipe/0014-accompanyingcanvas/ "Audio Presentation with Accompanying Image"
[0015]: {{ site.cookbook_url | absolute_url }}/recipe/0015-start/ "Begin playback at a specific point - Time-based media"
[0017]: {{ site.cookbook_url | absolute_url }}/recipe/0017-transcription-av/ "Providing Access to Transcript Files of A/V Content"

[0139]: {{ site.cookbook_url | absolute_url }}/recipe/0139-geolocate-canvas-fragment/ "Represent Canvas Fragment as a Geographic Area on a Web Map"

[0019]: {{ site.cookbook_url | absolute_url }}/recipe/0019-html-in-annotations/ "HTML in Annotations"
[0021]: {{ site.cookbook_url | absolute_url }}/recipe/0021-tagging/ "Simple Annotation — Tagging"
[0022]: {{ site.cookbook_url | absolute_url }}/recipe/0022-linking-with-a-hotspot/ "Redirecting from one Canvas to another resource (Hotspot linking)"

[0032]: {{ site.cookbook_url | absolute_url }}/recipe/0032-collection/ "Simple Collection"
[0033]: {{site.baseurl}}/recipe/0033-choice/ "Multiple choice of images in a single view"
[0035]: {{site.baseurl}}/recipe/0035-foldouts/ "Foldouts, Flaps, and Maps"
[0036]: {{site.baseurl}}/recipe/0036-composition-from-multiple-images/ "Composition from Multiple Images"
[0024]: {{ site.cookbook_url | absolute_url }}/recipe/0024-book-4-toc/ "Book with Table of contents (ranges)"
[0026]: {{ site.cookbook_url | absolute_url }}/recipe/0026-toc-opera/ "Table of Contents for A/V Content"
[0029]: {{ site.cookbook_url | absolute_url }}/recipe/0029-metadata-anywhere/ "Metadata on any Resource"
[0030]: {{ site.cookbook_url | absolute_url }}/recipe/0030-multi-volume/ "Multi-volume Work with Individually-bound Volumes"
[0031]: {{ site.cookbook_url | absolute_url }}/recipe/0031-bound-multivolume/ "Multiple Volumes in a Single Bound Volume"

[0032]: {{ site.cookbook_url | absolute_url }}/recipe/0032-collection/ "Simple Collection"
[0033]: {{site.baseurl}}/recipe/0033-choice/ "Multiple choice of images in a single view"
[0035]: {{site.baseurl}}/recipe/0035-foldouts/ "Foldouts, Flaps, and Maps"
[0036]: {{site.baseurl}}/recipe/0036-composition-from-multiple-images/ "Composition from Multiple Images"
[0040]: {{ site.cookbook_url | absolute_url }}/recipe/0040-image-rotation-service/ "Image Rotation Two Ways"

[0046]: {{ site.cookbook_url | absolute_url }}/recipe/0046-rendering/ "Providing Alternative Representations"
[0047]: {{ site.cookbook_url | absolute_url }}/recipe/0047-homepage/ "Linking to Web Page of an Object"
[0053]: {{ site.cookbook_url | absolute_url }}/recipe/0053-seeAlso/ "Linking to Structured Metadata"
[0046]: {{ site.cookbook_url | absolute_url }}/recipe/0046-rendering/ "Providing Alternative Representations"
[0064]: {{ site.cookbook_url | absolute_url }}/recipe/0064-opera-one-canvas/ "Table of Contents for Multiple A/V Files on a Single Canvas"
[0065]: {{ site.cookbook_url | absolute_url }}/recipe/0065-opera-multiple-canvases/ "Table of Contents for Multiple A/V Files on Multiple Canvases"

[0024]: {{ site.cookbook_url | absolute_url }}/recipe/0024-book-4-toc/ "Book with Table of contents (ranges)"

[0068]: {{ site.cookbook_url | absolute_url }}/recipe/0068-newspaper/ "Basic Newspaper"
[0074]: {{ site.cookbook_url | absolute_url}}/recipe/0074-multiple-language-captions/ "Using Caption and Subtitle Files in Multiple Languages with Video Content"
[0117]: {{ site.cookbook_url | absolute_url }}/recipe/0117-add-image-thumbnail/ "Image Thumbnail for Manifest"
[0118]: {{ site.cookbook_url | absolute_url }}/recipe/0118-multivalue/ "Displaying Multiple Values with Language Maps"

[0135]: {{ site.cookbook_url | absolute_url }}/recipe/0135-annotating-point-in-canvas/ "Annotating a specific point of an image"

[0139]: {{ site.cookbook_url | absolute_url }}/recipe/0139-geolocate-canvas-fragment/ "Represent Canvas Fragment as a Geographic Area on a Web Map"
[0154]: {{ site.cookbook_url | absolute_url }}/recipe/0154-geo-extension/ "Locate a Manifest on a Web Map"

[0232]: {{ site.cookbook_url | absolute_url }}/recipe/0232-image-thumbnail-canvas/ "Implementation discussion: Thumbnails on Canvases"
[0202]: {{ site.cookbook_url | absolute_url }}/recipe/0202-start-canvas/ "Load Manifest Beginning with a Specific Canvas"
[0219]: {{ site.cookbook_url | absolute_url }}/recipe/0219-using-caption-file/ "Using Caption and Subtitle Files with Video Content"
[0229]: {{ site.cookbook_url | absolute_url }}/recipe/0229-behavior-ranges/ "Adding Thumbnail Navigation and `no-nav` to a Video Resource"
[0230]: {{ site.cookbook_url | absolute_url }}/recipe/0230-navdate/ "Navigation by Chronology"
[0231]: {{ site.cookbook_url | absolute_url }}/recipe/0231-transcript-meta-recipe/ "Transcripts, Captions, and Subtitles - General Considerations"

[0232]: {{ site.cookbook_url | absolute_url }}/recipe/0232-image-thumbnail-canvas/ "Implementation discussion: Thumbnails on Canvases"
[0234]: {{ site.cookbook_url | absolute_url }}/recipe/0234-provider/ "Acknowledge Content Contributors"
[0240]: {{ site.cookbook_url | absolute_url }}/recipe/0240-navPlace-on-canvases/ "Locate Multiple Canvases on a Web Map"
[0261]: {{ site.cookbook_url | absolute_url }}/recipe/0261-non-rectangular-commenting/ "Annotation with a Non-Rectangular Polygon"
[0258]: {{ site.cookbook_url | absolute_url }}/recipe/0258-tagging-external-resource/ "Tagging with an External Resource"

[0261]: {{ site.cookbook_url | absolute_url }}/recipe/0261-non-rectangular-commenting/ "Annotation with a Non-Rectangular Polygon"
[0266]: {{ site.cookbook_url | absolute_url }}/recipe/0266-full-canvas-annotation/ "Simplest Annotation"
[0269]: {{ site.cookbook_url | absolute_url }}/recipe/0269-embedded-or-referenced-annotations/ "Embedded or Referenced Annotations"
[0283]: {{ site.cookbook_url | absolute_url }}/recipe/0283-missing-image/ "Missing Images in a Sequence"

[0299]: {{ site.cookbook_url | absolute_url }}/recipe/0299-region/ "Addressing a spatial region"
[0306]: {{ site.cookbook_url | absolute_url }}/recipe/0306-linking-annotations-to-manifests/ "Linking external Annotations targeting a Canvas to a Manifest"
[0309]: {{ site.cookbook_url | absolute_url }}/recipe/0309-annotation-collection/ "Using Annotation Collections"
[0318]: {{ site.cookbook_url | absolute_url }}/recipe/0318-navPlace-navDate/ "Locating an Item in Place and Time"
[0326]: {{ site.cookbook_url | absolute_url }}/recipe/0326-annotating-image-layer/ "Annotate a specific images or layers"

[0346]: {{ site.cookbook_url | absolute_url }}/recipe/0346-multilingual-annotation-body/ "Annotating in Multiple Languages"
[0377]: {{ site.cookbook_url | absolute_url }}/recipe/0377-image-in-annotation/ "Image in annotation"

[0434]: {{ site.cookbook_url | absolute_url }}/recipe/0434-choice-av/ "Multiple Choice of Audio Formats in a Single View (Canvas)"
[0466]: {{ site.cookbook_url | absolute_url }}/recipe/0466-link-for-loading-manifest/ "Loading a manifest with a viewer using a link"

[0485]: {{ site.cookbook_url | absolute_url }}/recipe/0485-contentstate-canvas-region/ "Open a specific region of a canvas in a viewer"

[0434]: {{ site.cookbook_url | absolute_url }}/recipe/0434-choice-av/ "Multiple Choice of Audio Formats in a Single View (Canvas)"
[0489]: {{ site.cookbook_url | absolute_url }}/recipe/0489-multimedia-canvas/ "Rendering Multiple Media Types on a Time-Based Canvas"
[0540]: {{ site.cookbook_url | absolute_url }}/recipe/0540-link-for-opening-multiple-canvases/ "Sharing a link for opening two or more Canvases"
[0608-4]: {{ site.cookbook_url | absolute_url }}/recipe/0608-mvm-3d/#version-4 "Simplest Manifest - 3D model"

[cookbook-process]: {{site.cookbook_url | absolute_url }}/recipe

Expand All @@ -96,6 +83,9 @@
[prezi3-pointselector]: {{ site.api_url | absolute_url }}/annex/openannotation/#point-selector "PointSelector"
[prezi3-range]: {{ site.api_url | absolute_url }}/presentation/3.0/#54-range "Range"

[prezi4-model]: {{ site.api_url | absolute_url }}/presentation/4.0/model/ "IIIF Presentation API version 4 Data Model"
[prezi4-overview]: {{ site.api_url | absolute_url }}/presentation/4.0/model/ "IIIF Presentation API version 4 Overview"

[service-registry]: {{ site.api_url | absolute_url }}/registry/services/ "the IIIF Registry of Services"

[cookbook-repo]: https://github.com/IIIF/cookbook-recipes
Expand Down
4 changes: 4 additions & 0 deletions _includes/manifest_links.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
{% if include.viewers %}
{% assign viewers = include.viewers | split: "," %}
{% else %}
{% if include.version == "4" %}
{% assign viewers = page.v4-viewers %}
{%else %}
{% assign viewers = page.viewers %}
{% endif %}
{% endif %}
[JSON-LD]({{ include.manifest }}) {% for viewerTxt in viewers %}{% assign viewer = viewerTxt | strip %}| {% include viewer_link.html type=viewer manifest=include.manifest annotationurl=include.annotationurl %}{% endfor %}

Expand Down
35 changes: 35 additions & 0 deletions css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,39 @@ code {
top: 0px;
background-color: white;
box-shadow: inset 0 -1px 0 #dbdbdb;
}

.container-block {
padding: 0px !important;
padding-bottom: 2.75rem !important;
}
.hero-body .has-text-centered h1 {
text-align: center !important;
}
.has-text-centered {
text-align: left !important;
}
.has-text-centered p {
text-align: left !important;
}

.tabs {
position: sticky;
top: 0px;
background-color: white;
opacity: 1;
z-index: 1;
}

.is-active {
color: #0073b0;
}

.is-active h3 {
color: #0073b0;
background: #f7f5f5;
}
.is-active a {
border-top-style: solid;
border-top-width: 2px;
}
8 changes: 4 additions & 4 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,10 @@ Anyone is welcome to submit a recipe idea or work on implementing a recipe. Advi

_The corresponding 2.1 test fixture(s) is given like this, where appropriate: ..(3,5)_

* [Simplest Manifest - Image][0001] (1) (use static image as content resource, w.h)
* [Simplest Manifest - Audio][0002] (1) (use single audio as content resource, d)
* [Simplest Manifest - Video][0003] (1) (use single video as content resource, w,h,d)
* [Simplest Manifest - Image][0001] - [version 4][0001-4]
* [Simplest Manifest - Audio][0002] - [version 4][0002-4]
* [Simplest Manifest - Video][0003] - [version 4][0003-4] (1) (use single video as content resource, w,h,d)
* [Simplest Manifest - 3D][0608-4]
* [Image and Canvas with Differing Dimensions][0004] (26)
* [Support Deep Viewing with Basic Use of a IIIF Image Service][0005] (24,25)
* [Internationalization and Multi-language Values][0006] (3,4,6)
Expand Down Expand Up @@ -67,7 +68,6 @@ _The corresponding 2.1 test fixture(s) is given like this, where appropriate: ..
* [Transcription of image-based content][016]
* [Using Transcripts with A/V Content][0017]
* [Using Captions and Subtitles with Video Content][0219]
* Transcription of content into XML, with XPaths to select a segment
* [Providing Alternative Representations][0046]
* [Transcripts, Captions, and Subtitles - General Considerations][0231]
* [Providing Access to Transcript Files of A/V Content][0017]
Expand Down
65 changes: 27 additions & 38 deletions recipe/0001-mvm-image/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,50 +5,39 @@ layout: recipe
tags: [image, presentation]
summary: "The simplest viable manifest for image content. If all you have for an object is one image on the web and a label, this pattern turns it into a IIIF Presentation resource."
viewers:
- Mirador
- UV
- Annona
- Clover
- Glycerine Viewer
- Theseus
- Curation
- Mirador
- UV
- Annona
- Clover
- Glycerine Viewer
- Theseus
- Curation
v4-viewers:
- Mirador
- UV
- Annona
- Clover
- Theseus
topic:
- basic
- image
code:
- iiif-prezi3
top_tabs:
- label: Version 3
content: "{% capture my_include %}{%- include_relative recipe.md version='3' -%}{% endcapture %}{{ my_include | markdownify }}"
- label: Version 4
content: "{% capture my_include %}{%- include_relative v4/recipe.md version='4' -%}{% endcapture %}{{ my_include | markdownify }}"
---

{{ theme.block-center-start }}

## Use Case
{% include blocks/tabs.html tabs=page.top_tabs %}

The simplest viable manifest for image content. If all you have for an object is one image on the web and a label to go along with it, this pattern turns it into a IIIF Presentation resource. If you would like to enable deep zooming, you will need to use a IIIF Image server. For this, see the [Support Deep Viewing with Basic Use of a IIIF Image Service][0005] recipe.

## Implementation Notes

This illustrates the mandatory structure and properties of a manifest, with the simplest possible content.

The JSON-LD opens with the `@context` declaration, which identifies the terms used in the document as belonging to the IIIF specification. The `id` property identifies this manifest with the URL at which it is available online. The `type` property must be `Manifest`. The `label` property is mandatory, and the language of its value must be given (or the special value `none`), using a [language map][prezi3-languages]. Here the language of the label is English and its value is "Single Image Example". The manifest's `items` property is a list of canvases. In this example there is only one canvas, with a `height` of 1800 and a `width` of 1200. These units have no dimension: they establish a coordinate space that in this case the single image will fill. The canvas's `id` property is used later as the `target` of the annotation that links to the single image.

The `items` property of the Canvas is a list of annotation pages, in this case there is only one page. The `items` property of the annotation page is a list of annotations, in this case there is only one annotation. This annotation is what links the image resource with the canvas. The `body` of the annotation is an image, the url of which is the `id` property of the body. The dimensions of the image, in pixels, are given and here match the canvas dimensions exactly. The `target` property tells us that the image is associated with the entirety of the canvas, and the `motivation` property of `painting` tells us that a client should render the image to fill the canvas.

## Restrictions

This recipe is not for large images or deep zoom functionality. For this, see the [Support Deep Viewing with Basic Use of a IIIF Image Service][0005] recipe.

## Example

{% include manifest_links.html manifest="manifest.json" %}

{% include jsonviewer.html src="manifest.json" %}

# Related Recipes

* [Simplest Manifest - Audio][0002] and [Simplest Manifest - Video][0003] are equivalent to this example but for other media.
* [Support Deep Viewing with Basic Use of a IIIF Image Service][0005] shows a basic manifest for use with a IIIF Image server.
* [Image different size to canvas][0004] shows a canvas with dimensions different from the pixel dimensions of its content.
* [Multiple values and languages][0006] demonstrates language map variations, for multiple values and multiple languages.


{% include acronyms.md %}
{% include links.md %}
{{ theme.block-end }}
<script>
if (!window.location.hash) {
let el = document.getElementById("version-3-heading");
el.className += " is-active";
}
</script>
32 changes: 32 additions & 0 deletions recipe/0001-mvm-image/recipe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
## Use Case

The simplest viable manifest for image content. If all you have for an object is one image on the web and a label to go along with it, this pattern turns it into a IIIF Presentation resource. If you would like to enable deep zooming, you will need to use a IIIF Image server. For this, see the [Support Deep Viewing with Basic Use of a IIIF Image Service][0005] recipe.

## Implementation Notes

This illustrates the mandatory structure and properties of a manifest, with the simplest possible content.

The JSON-LD opens with the `@context` declaration, which identifies the terms used in the document as belonging to the IIIF specification. The `id` property identifies this manifest with the URL at which it is available online. The `type` property must be `Manifest`. The `label` property is mandatory, and the language of its value must be given (or the special value `none`), using a [language map][prezi3-languages]. Here the language of the label is English and its value is "Single Image Example". The manifest's `items` property is a list of canvases. In this example there is only one canvas, with a `height` of 1800 and a `width` of 1200. These units have no dimension: they establish a coordinate space that in this case the single image will fill. The canvas's `id` property is used later as the `target` of the annotation that links to the single image.

The `items` property of the Canvas is a list of annotation pages, in this case there is only one page. The `items` property of the annotation page is a list of annotations, in this case there is only one annotation. This annotation is what links the image resource with the canvas. The `body` of the annotation is an image, the url of which is the `id` property of the body. The dimensions of the image, in pixels, are given and here match the canvas dimensions exactly. The `target` property tells us that the image is associated with the entirety of the canvas, and the `motivation` property of `painting` tells us that a client should render the image to fill the canvas.

## Restrictions

This recipe is not for large images or deep zoom functionality. For this, see the [Support Deep Viewing with Basic Use of a IIIF Image Service][0005] recipe.

## Example

{% include manifest_links.html manifest="manifest.json" version="3" %}

{% include jsonviewer.html src="manifest.json" %}

# Related Recipes

* [Simplest Manifest - Audio][0002] and [Simplest Manifest - Video][0003] are equivalent to this example but for other media.
* [Support Deep Viewing with Basic Use of a IIIF Image Service][0005] shows a basic manifest for use with a IIIF Image server.
* [Image different size to canvas][0004] shows a canvas with dimensions different from the pixel dimensions of its content.
* [Multiple values and languages][0006] demonstrates language map variations, for multiple values and multiple languages.


{% include acronyms.md %}
{% include links.md %}
Loading
Loading