├── app
├── .gitignore
├── src
│ ├── main
│ │ ├── assets
│ │ │ ├── nodz.gif
│ │ │ ├── hovercat.gif
│ │ │ ├── top_pane-1.9.4.jpg
│ │ │ ├── articles
│ │ │ │ ├── SZ_250.jpg
│ │ │ │ ├── lessonone.png
│ │ │ │ ├── opto_LIGLUR.png
│ │ │ │ ├── opto_opener.png
│ │ │ │ ├── opto_sidebar.jpg
│ │ │ │ ├── market-qr-code.png
│ │ │ │ ├── channelrhodopsin-2.gif
│ │ │ │ ├── kbogla_largecover.jpg
│ │ │ │ ├── lessonone-180x300.png
│ │ │ │ ├── opto_damagedretina.png
│ │ │ │ ├── wt_javasparrow_free.jpg
│ │ │ │ ├── rtl_test_2.html
│ │ │ │ ├── gif_animation.html
│ │ │ │ ├── science2a.html
│ │ │ │ └── rtl_test.html
│ │ │ ├── game-screen-1.9.4.jpg
│ │ │ ├── right_pane-1.9.4.jpg
│ │ │ ├── fonts
│ │ │ │ └── GamjaFlower-Regular.ttf
│ │ │ └── about.html
│ │ ├── ic_real-web.png
│ │ ├── ic_article-web.png
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── pinfish.jpg
│ │ │ │ └── pinfish_small.jpg
│ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_logo.png
│ │ │ │ ├── ic_real.png
│ │ │ │ ├── ic_article.png
│ │ │ │ ├── ic_columns.png
│ │ │ │ └── ic_play_button.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_logo.png
│ │ │ │ ├── ic_real.png
│ │ │ │ ├── ic_article.png
│ │ │ │ ├── ic_columns.png
│ │ │ │ └── ic_play_button.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_logo.png
│ │ │ │ ├── ic_real.png
│ │ │ │ ├── ic_article.png
│ │ │ │ ├── ic_columns.png
│ │ │ │ └── ic_play_button.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_logo.png
│ │ │ │ ├── ic_real.png
│ │ │ │ ├── ic_article.png
│ │ │ │ ├── ic_columns.png
│ │ │ │ └── ic_play_button.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_logo.png
│ │ │ │ ├── ic_real.png
│ │ │ │ ├── ic_article.png
│ │ │ │ ├── ic_columns.png
│ │ │ │ ├── ic_hyphen.png
│ │ │ │ ├── ic_justify.png
│ │ │ │ ├── ic_image_wrap.png
│ │ │ │ ├── ic_play_button.png
│ │ │ │ ├── ic_select_text.png
│ │ │ │ └── ic_battle_for_wesnoth.png
│ │ │ ├── drawable-hdpi
│ │ │ │ ├── ic_hyphen.png
│ │ │ │ ├── ic_justify.png
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_image_wrap.png
│ │ │ │ ├── ic_action_name.png
│ │ │ │ ├── ic_select_text.png
│ │ │ │ └── ic_battle_for_wesnoth.png
│ │ │ ├── drawable-mdpi
│ │ │ │ ├── ic_hyphen.png
│ │ │ │ ├── ic_justify.png
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_image_wrap.png
│ │ │ │ ├── ic_action_name.png
│ │ │ │ ├── ic_select_text.png
│ │ │ │ └── ic_battle_for_wesnoth.png
│ │ │ ├── drawable-xhdpi
│ │ │ │ ├── ic_hyphen.png
│ │ │ │ ├── ic_justify.png
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_action_name.png
│ │ │ │ ├── ic_image_wrap.png
│ │ │ │ ├── ic_select_text.png
│ │ │ │ └── ic_battle_for_wesnoth.png
│ │ │ ├── drawable-xxhdpi
│ │ │ │ ├── ic_hyphen.png
│ │ │ │ ├── ic_justify.png
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_action_name.png
│ │ │ │ ├── ic_image_wrap.png
│ │ │ │ ├── ic_select_text.png
│ │ │ │ └── ic_battle_for_wesnoth.png
│ │ │ ├── xml
│ │ │ │ └── activity_textview_ws_help.xml
│ │ │ ├── values
│ │ │ │ ├── styles.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── help.xml
│ │ │ │ └── strings.xml
│ │ │ ├── layout
│ │ │ │ ├── acitivity_multi_column_text_view_ex.xml
│ │ │ │ ├── activity_another_hyphen_text_view_ex.xml
│ │ │ │ ├── activity_articles_flow.xml
│ │ │ │ ├── activity_about.xml
│ │ │ │ ├── activity_text_view_ws.xml
│ │ │ │ ├── activity_hyphen_text_view_ex.xml
│ │ │ │ ├── activity_multi_column_text_view_ex.xml
│ │ │ │ ├── samples_list_item.xml
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── activity_text_view_ex_scroll.xml
│ │ │ │ ├── records_list_item.xml
│ │ │ │ ├── activity_recycler_view.xml
│ │ │ │ └── article_page_view.xml
│ │ │ ├── values-w820dp
│ │ │ │ └── dimens.xml
│ │ │ ├── menu
│ │ │ │ ├── menu_main.xml
│ │ │ │ ├── menu_about.xml
│ │ │ │ ├── menu_articles_flow.xml
│ │ │ │ ├── menu_text_view_w.xml
│ │ │ │ ├── menu_hyphen_text_view_ex.xml
│ │ │ │ ├── menu_multi_column_text_view_ex.xml
│ │ │ │ ├── menu_another_hyphen_text_view_ex.xml
│ │ │ │ ├── text_options.xml
│ │ │ │ └── menu_text_view_ex_scroll.xml
│ │ │ └── layout-land
│ │ │ │ └── activity_multi_column_text_view_ex.xml
│ │ ├── java
│ │ │ └── su
│ │ │ │ └── whs
│ │ │ │ └── watl
│ │ │ │ └── samples
│ │ │ │ ├── ArticleView.java
│ │ │ │ ├── TaggedBitmapDrawable.java
│ │ │ │ ├── TextPager.java
│ │ │ │ ├── TextViewWSActivity.java
│ │ │ │ ├── SampleActionModeCallback.java
│ │ │ │ ├── GifDrawableCompat.java
│ │ │ │ ├── MultiColumnTextViewExActivity.java
│ │ │ │ ├── TextOptionsHandler.java
│ │ │ │ ├── HyphenTextViewExActivity.java
│ │ │ │ ├── RTLTestActivity.java
│ │ │ │ ├── AssetGifDrawable.java
│ │ │ │ ├── TextViewExScrollActivity.java
│ │ │ │ ├── AnimationActivity.java
│ │ │ │ ├── utils
│ │ │ │ └── ArticleSerializer.java
│ │ │ │ ├── ReaderViewPagerTransformer.java
│ │ │ │ ├── AboutActivity.java
│ │ │ │ ├── AnotherHyphenTextViewExActivity.java
│ │ │ │ └── wATLApp.java
│ │ └── AndroidManifest.xml
│ └── androidTest
│ │ └── java
│ │ └── su
│ │ └── whs
│ │ └── watl
│ │ └── ApplicationTest.java
├── proguard-rules.pro
└── build.gradle
├── htmlparser
├── .gitignore
├── src
│ ├── main
│ │ ├── res
│ │ │ └── values
│ │ │ │ └── strings.xml
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ │ └── su
│ │ │ └── whs
│ │ │ └── htmlparser
│ │ │ └── Html.java
│ ├── test
│ │ └── java
│ │ │ └── su
│ │ │ └── whs
│ │ │ └── htmlparser
│ │ │ └── ExampleUnitTest.java
│ └── androidTest
│ │ └── java
│ │ └── su
│ │ └── whs
│ │ └── htmlparser
│ │ └── ExampleInstrumentedTest.java
├── proguard-rules.pro
└── build.gradle
├── mediaview
├── .gitignore
├── src
│ ├── main
│ │ ├── res
│ │ │ └── values
│ │ │ │ └── strings.xml
│ │ ├── java
│ │ │ └── su
│ │ │ │ └── whs
│ │ │ │ └── mediaview
│ │ │ │ ├── IMediaView.java
│ │ │ │ └── MediaContainer.java
│ │ └── AndroidManifest.xml
│ ├── test
│ │ └── java
│ │ │ └── su
│ │ │ └── whs
│ │ │ └── mediaview
│ │ │ └── ExampleUnitTest.java
│ └── androidTest
│ │ └── java
│ │ └── su
│ │ └── whs
│ │ └── mediaview
│ │ └── ExampleInstrumentedTest.java
├── proguard-rules.pro
└── build.gradle
├── syllabification
├── .gitignore
├── src
│ ├── main
│ │ ├── res
│ │ │ └── values
│ │ │ │ └── strings.xml
│ │ ├── resources
│ │ │ └── hyphenation-rules
│ │ │ │ ├── fr.hyphen.dat
│ │ │ │ └── pt.hyphen.dat
│ │ ├── java
│ │ │ └── su
│ │ │ │ └── whs
│ │ │ │ └── hyphens
│ │ │ │ ├── PatternsBuilder.java
│ │ │ │ ├── InputStreamPatternLoader.java
│ │ │ │ ├── PatternsLoader.java
│ │ │ │ └── HyphenLineBreaker.java
│ │ └── AndroidManifest.xml
│ ├── test
│ │ └── java
│ │ │ └── su
│ │ │ └── whs
│ │ │ └── hyphens
│ │ │ └── ExampleUnitTest.java
│ └── androidTest
│ │ └── java
│ │ └── su
│ │ └── whs
│ │ └── hyphens
│ │ └── ExampleInstrumentedTest.java
├── README.md
├── proguard-rules.pro
├── build.gradle
└── deploy.gradle
├── hyphenation-rules
├── .gitignore
├── src
│ ├── fr
│ │ └── assets
│ │ │ └── fr.hyphen.dat
│ ├── pt
│ │ └── assets
│ │ │ └── pt.hyphen.dat
│ ├── main
│ │ └── AndroidManifest.xml
│ ├── test
│ │ └── java
│ │ │ └── su
│ │ │ └── whs
│ │ │ └── hyphenation
│ │ │ └── rules
│ │ │ └── ExampleUnitTest.java
│ └── androidTest
│ │ └── java
│ │ └── su
│ │ └── whs
│ │ └── hyphenation
│ │ └── rules
│ │ └── ExampleInstrumentedTest.java
├── proguard-rules.pro
└── build.gradle
├── syllabification-parent
├── .gitignore
├── src
│ ├── main
│ │ ├── res
│ │ │ └── values
│ │ │ │ └── strings.xml
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ │ └── su
│ │ │ └── whs
│ │ │ └── syllabification
│ │ │ └── parent
│ │ │ └── LineBreaker.java
│ ├── test
│ │ └── java
│ │ │ └── su
│ │ │ └── whs
│ │ │ └── syllabification
│ │ │ └── parent
│ │ │ └── ExampleUnitTest.java
│ └── androidTest
│ │ └── java
│ │ └── su
│ │ └── whs
│ │ └── syllabification
│ │ └── parent
│ │ └── ExampleInstrumentedTest.java
├── README.md
├── proguard-rules.pro
└── build.gradle
├── wATLlib
├── wlazydrawable-parent
├── .gitignore
├── src
│ ├── main
│ │ ├── res
│ │ │ └── values
│ │ │ │ └── strings.xml
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ │ └── su
│ │ │ └── whs
│ │ │ └── lazydrawable
│ │ │ └── parent
│ │ │ └── LazyDrawable.java
│ ├── test
│ │ └── java
│ │ │ └── su
│ │ │ └── whs
│ │ │ └── lazydrawable
│ │ │ └── ExampleUnitTest.java
│ └── androidTest
│ │ └── java
│ │ └── su
│ │ └── whs
│ │ └── lazydrawable
│ │ └── ApplicationTest.java
├── build.gradle
└── proguard-rules.pro
├── screenshots
├── aa-s2s.png
├── imageWrap1.png
├── imageWrap2.png
├── TextViewWS1.png
├── newLineMargins.png
├── HyphenTextViewEx1.png
├── HyphenTextViewEx2.png
├── HyphenTextViewEx3.png
├── imageWrapSide2Side.png
├── newLineMarginsPart01.png
├── TextViewExScrollView1.png
├── newLineMarginsPart01Desc.png
├── MultiColumnSamplePhonePortrait.png
└── MultiColumnSamplePhoneLandscape.png
├── .gitmodules
├── whsutils
├── src
│ ├── main
│ │ ├── res
│ │ │ └── values
│ │ │ │ └── strings.xml
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ │ └── su
│ │ │ └── whs
│ │ │ └── utils
│ │ │ ├── ManifestMetadata.java
│ │ │ ├── NetUtils.java
│ │ │ ├── AndroidUtils.java
│ │ │ ├── ZipFileExt.java
│ │ │ └── FileUtils.java
│ └── androidTest
│ │ └── java
│ │ └── su
│ │ └── whs
│ │ └── utils
│ │ └── ApplicationTest.java
├── build.gradle
└── proguard-rules.pro
├── gradle.properties
├── .gitignore
├── settings.gradle
├── gradle
└── wrapper
│ └── gradle-wrapper.properties
├── .idea
└── runConfigurations.xml
└── README.md
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/htmlparser/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/mediaview/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/syllabification/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/hyphenation-rules/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/syllabification-parent/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/wATLlib:
--------------------------------------------------------------------------------
1 | /home/geek/AndroidStudioProjects/Separates/wATLlib
--------------------------------------------------------------------------------
/wlazydrawable-parent/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | *.iml
3 | /deploy.gradle
4 |
--------------------------------------------------------------------------------
/screenshots/aa-s2s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/screenshots/aa-s2s.png
--------------------------------------------------------------------------------
/screenshots/imageWrap1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/screenshots/imageWrap1.png
--------------------------------------------------------------------------------
/screenshots/imageWrap2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/screenshots/imageWrap2.png
--------------------------------------------------------------------------------
/app/src/main/assets/nodz.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/app/src/main/assets/nodz.gif
--------------------------------------------------------------------------------
/app/src/main/ic_real-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/app/src/main/ic_real-web.png
--------------------------------------------------------------------------------
/screenshots/TextViewWS1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/screenshots/TextViewWS1.png
--------------------------------------------------------------------------------
/app/src/main/ic_article-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/app/src/main/ic_article-web.png
--------------------------------------------------------------------------------
/screenshots/newLineMargins.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/screenshots/newLineMargins.png
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "watllibrarylite"]
2 | path = wATLlib
3 | url = git@github.com:suwhs/wATLlib.git
4 |
--------------------------------------------------------------------------------
/app/src/main/assets/hovercat.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/app/src/main/assets/hovercat.gif
--------------------------------------------------------------------------------
/screenshots/HyphenTextViewEx1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/screenshots/HyphenTextViewEx1.png
--------------------------------------------------------------------------------
/screenshots/HyphenTextViewEx2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/screenshots/HyphenTextViewEx2.png
--------------------------------------------------------------------------------
/screenshots/HyphenTextViewEx3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/screenshots/HyphenTextViewEx3.png
--------------------------------------------------------------------------------
/screenshots/imageWrapSide2Side.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/screenshots/imageWrapSide2Side.png
--------------------------------------------------------------------------------
/screenshots/newLineMarginsPart01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/screenshots/newLineMarginsPart01.png
--------------------------------------------------------------------------------
/app/src/main/assets/top_pane-1.9.4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/app/src/main/assets/top_pane-1.9.4.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable/pinfish.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/app/src/main/res/drawable/pinfish.jpg
--------------------------------------------------------------------------------
/screenshots/TextViewExScrollView1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suwhs/wATL/HEAD/screenshots/TextViewExScrollView1.png
--------------------------------------------------------------------------------
/whsutils/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |

6 |
9 |
This is wATL library demo application, shows some features of TextViewEx - drop-in 12 | replacement for standart android.view.TextView with some additional features: 13 |
24 |
25 |
26 | [](https://youtu.be/ZtXvyS6GHGo)
27 |
28 |
29 | Quick Start
30 | ======
31 | Usage:
32 |
33 | wATLlib published on jcenter repository, so just
34 |
35 | add to dependencies :
36 | ```gradle
37 | compile 'su.whs:wATLlib:1.1.7a'
38 | ```
39 |
40 |
41 | Published Classes
42 | ========
43 |
44 | some description on Wiki
45 |
46 | - *su.whs.watl.ui.TextViewWS* - base class with methods for handling text selection
47 | screenshot 1
48 | - *su.whs.watl.ui.ClickableSpanListener* - interface for easy handle clicks on drawable
49 | onClick() method receive view, span position, and coordinates of image within view
50 |
51 | - *su.whs.watl.ui.TextViewEx* - class (replacement for stock TextView) with full text justification support (enabled by default)
52 | screenshot 2
53 |
54 |
55 | Contacts
56 | ========
57 | wATL HomeLorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi eros ipsum, dictum nec neque et, facilisis gravida dolor. Morbi mi sem, laoreet ac volutpat at, vehicula eget nibh. Mauris velit elit, iaculis in auctor id, fringilla non diam. Sed vehicula nisi neque, at vulputate arcu vulputate nec.
5 |عل حول يرتبط القوى مقاطعة. ضرب معزّزة المنتصر الألماني إذ. تم دنو بشرية ويتّفق والبريطاني, وشعار وفنلندا الأوروبي مع حتى, يكن قد هُزم البشريةً. عل خطّة وحتى بالدبابات تلك, حول ماذا الأولية العسكرية عن.
الى ألمّ الأوروبية، عل, نورماندي لبولندا، انه لم, جوي إحتلال بالمحور لم.
شمال بانتحار العمليات تعد عل, جوي إذ اللا جحافل العام, بعد وأكثرها التجارية ما. و جدول النازي واستمرت
هذه, لم هاربر للحرب الشمل لان. سمّي الصين الولايات تم بها. أخذ مع لأداء والحلفاء, إذ وفي خطّة إخضاع الرئيسية, المواد الإتفاقية السوفييتي أضف تم. بها وقامت لألمانيا أي, شمال غريمه أم تلك, أي بين أمّا لقوات مواقعها.
6 |7 | Quisque id enim congue, ullamcorper felis aliquam, sodales nisi. Duis ligula lectus, efficitur vel tristique eget, volutpat vitae nisi. 8 | 9 | كرسي العظمى ذلك قد. مسرح لدحر الأوروبيّون أم بحق, الضغوط والبريطاني قد كان, مع بعض الأجل بمباركة 10 |
11 |
12 | Ut vel urna tristique, scelerisque felis vel, fringilla erat. Fusce dignissim quam nec nunc feugiat varius. Etiam egestas iaculis elit, at porttitor elit dapibus nec.
13 | واستمرت. وحزبه وأكثرها قهر ان. جعل كل مهمّات الخاسر التاريخ،, لم انه دارت صفحة غريمه, و ذات أفاق أواخر استدعى. الخاصّة الياباني السوفييتية عل ومن, خصوصا المحور والمانيا وضم أن, الجنود بأضرار و تحت. وتقهقر العمليات مكن عن, والديون المجتمع البشريةً ثم دنو.
14 |
15 | Etiam turpis enim, ornare convallis placerat eget, commodo vel erat. سابق أساسي تغييرات لم أما. غزو الدول هيروشيما أم, حين أصقاع الأحمر العالمي إذ, أحدث وبعدما واقتصار عن هذا. فسقط العمليات بحق لم, من قبضتهم الهادي وقد. أضف أن الأولى إستسلاماً. هو صفحة أحكم مشروط ربع, دار السبب أسلحته بالرّغم مع. كلّ تاريخ لهيمنة نورمبرغ أي.
16 |
18 | قط من جحافل الإمبراطورية, الذرية تكاليف ومن بـ, الحزب كنقطة ثم دار. للغزو، الإيطالية إذ ربع, قِبل وأسرت وتم من. حيث بلاده الحدود للسيطرة كل, عل للحرب أوكيناوا أضف. مع الا يذكر ٢٠٠٤ واعتلاء, لم وفي سقطت الحروب. عل كان ماذا القوى, ربع بـ عقبت وقدّموا المقيتة, أن مشارف الطرفين شبح. الجوي الدمج عسكرياً كل يتم. الأعمال القوقازية والبريطاني أن عام. 19 |
20 | 21 | -------------------------------------------------------------------------------- /syllabification/src/main/java/su/whs/hyphens/HyphenLineBreaker.java: -------------------------------------------------------------------------------- 1 | package su.whs.hyphens; 2 | 3 | /** 4 | * 5 | * 6 | * @author igor n. boulliev
5 |
6 | As they rounded a bend in the path that ran beside the river, Lara recognized the silhouette of a fig tree atop a nearby hill. The weather was hot and the days were long. The fig tree was in full leaf, but not yet bearing fruit. 12 | Soon Lara spotted other landmarks—an outcropping of limestone beside the path that had a silhouette like a man’s face, a marshy spot beside the river where the waterfowl were easily startled, a tall tree that looked like a man with his arms upraised. They were drawing near to the place where there was an island in the river. The island was a good spot to make camp. They would sleep on the island tonight. 13 | Lara had been back and forth along the river path many times in her short life.
14 | 
Her people had not created the path—it had always been there, like the river—but their deerskin-shod feet and the wooden wheels of their handcarts kept the path well worn. Lara’s people were salt traders, and their livelihood took them on a continual journey. 15 | At the mouth of the river, the little group of half a dozen intermingled families gathered salt from the great salt beds beside the sea. They groomed and sifted the salt and loaded it into handcarts. When the carts were full, most of the group would stay behind, taking shelter amid rocks and simple lean-tos, while a band of fifteen or so of the heartier members set out on the path that ran alongside the river. 16 | With their precious cargo of salt, the travelers crossed the coastal lowlands and traveled toward the mountains. But Lara’s people never reached the mountaintops; they traveled only as far as the foothills. Many people lived in the forests and grassy meadows of the foothills, gathered in small villages. In return for salt, these people would give Lara’s people dried meat, animal skins, cloth spun from wool, clay pots, needles and scraping tools carved from bone, and little toys made of wood. 17 | Their bartering done, Lara and her people would travel back down the river path to the sea. The cycle would begin again. 18 | It had always been like this. Lara knew no other life.
She traveled back and forth, up and down the river path. No single place was home. She liked the seaside, where there was always fish to eat, and the gentle lapping of the waves lulled her to sleep at night. She was less fond of the foothills, where the path grew steep, the nights could be cold, and views of great distances made her dizzy. She felt uneasy in the villages, and was often shy around strangers. The path itself was where she felt most at home. She loved the smell of the river on a hot day, and the croaking of frogs at night. Vines grew amid the lush foliage along the river, with berries that were good to eat. Even on the hottest day, sundown brought a cool breeze off the water, which sighed and sang amid the reeds and tall grasses. 19 | Of all the places along the path, the area they were approaching, with the island in the river, was Lara’s favorite. 20 | The terrain along this stretch of the river was mostly flat, but in the immediate vicinity of the island, the land on the sunrise side was like a rumpled cloth, with hills and ridges and valleys. Among Lara’s people, there was a wooden baby’s crib, suitable for strapping to a cart, that had been passed down for generations. The island was shaped like that crib, longer than it was wide and pointed at the upriver end, where the flow had eroded both banks. The island was like a crib, and the group of hills on the sunrise side of the river were like old women mantled in heavy cloaks gathered to have a look at the baby in the crib—that was how Lara’s father had once described the lay of the land.
p> 21 | 22 |