This is a project to recreate the browser from the browser.engineer project, by Pavel Panchekha & Chris Harrelson (2023). It uses Typescript instead of loosey-goosey Python, as a warm up for larger browser projects.
The plot of our browser is broken down into three acts:
IV. Displaying said Response
This is not so much a climax as it is a never-ending sequel. Not so much Macbeth, as Henry the VI. We need to...
- Determine the type
- Display the type
In the event of an HTML response, we need to...
- Construct the DOM
- Start painting styles,
- Start running any JS we run into, which is a whole world unto itself.
These are the features included/recommended as part of Pavel & Harrelson (2023).
- Connecting to a server
- Requesting Information
- Request and Response
- Display the HTML
- Encrypted connections
Exercises:
- HTTP/1.1
- File URLs
- data schemes
- body tag
- entities
- view-source
- compression (gzip)
- Redirects
- Caches
- Drawing to the Window
- Laying out the text
- Scrolling text
- Reacting to the user
- Faster Rendering
Exercises:
- Line Breaks
- Mouse Wheel
- Emoji
- Resizing
- Zoom
- What is a font?
- Measuring Text
- Measure by word
- Styling Text
- A layout object
- Text of different sizes
- Faster text layout
Exercises
- Centered Text
- Superscripts
- Soft Hyphens
- Small caps
- Preformatted text
- A tree of nodes
- Constructing the tree
- Debugging a parser
- Self-closing tags
- Using the node tree
- Handling author errors
Exercises:
- Comments
- Paragraphs
- Scripts
- Quoted Attributes
- Syntax Highlighting
- The layout tree
- Block Layout
- Size and position
- Recursive painting
- Backgrounds
Exercises:
- Links Bar
- Hidden Head
- Bullets
- Scrollbar
- Table of Contents
- Anonymous Black Boxes
- Run Ins
Pavel, P., & Harrelson, C. (2023). Web Browser Engineering Browser.Engineering https://browser.engineering/index.html